B4J Question [solved] sqlite foreign_keys

giannimaione

Well-Known Member
Licensed User
Longtime User
how to solve insert with Null?
database with two tables
1) Group (idGroup integer, Group_Name text)
2) students (idStudent INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, Name_of_Student text, idgroup integer)
idgroup is a FOREIGN KEY references Gruoup / idGroup

B4X:
Dim name As TextField
name.Initialize("")
name.Text="albert einstein"
'
Dim group As TextField
group.Inizialize("")
group.text = null ' how to set Null ???
'
sql.ExecNonQuery("PRAGMA foreign_keys = ON")

'next code is bad
sql.ExecNonQuery2("insert into students values (?, ?)", Array As Object( name.Text,  group.Text)) 'Abort due to constraint violation (foreign key constraint failed)
'
'this is ok
sql.ExecNonQuery2("insert into students values (?, ?)", Array As Object(name.Text,  Null)) ' this is ok! but  I don't want to write null
'
'this code is OK!
name.Text="Alessandro Volta"
gruppi.text = "1" 'this is a id of table named group (id 1 is exists!)
sql.ExecNonQuery2("insert into students values (?, ?)", Array As Object(name.Text,  gruppi.Text)) 'success
 

drgottjr

Expert
Licensed User
Longtime User
setting group.text = null -----> makes it "null"

i believe you need to do it like this:
B4X:
dim secondparmeter as object
if group.text.length < 1 then
   secondparmeter = null
else
  secondparmeter = group.text
end if
sql.ExecNonQuery2("insert into students values (?, ?)", Array As Object(name.Text,  secondparmeter))                 ' this is ok! but  I don't want to write null
 
Upvote 0

giannimaione

Well-Known Member
Licensed User
Longtime User
thanks @drgottjr
or
B4X:
dim mylist as list
mylist.inizialize
mylist.add (null) ' for id autoincrement
mylist.add (name.text)
if group.text.lenght < 1 then
     mylist.add (null)
else
     mylist.add (group.text)
end if
sql.ExecNonQuery2("insert into students values (?, ?, ?)", mylist) '3 field on table
 
Upvote 0
Top