Witam, mam problem z wysłaniem NULL do bazy sqLite :/
Z góry wielkie dzięki za pomoc.
jakieś szczegóły? podaj przynajmniej jak to robisz w tej chwili.
Ktoś jeszcze ma z tym problem?
Wpisujcie miasta!
o to kod :
sqlite_conn = new SQLiteConnection(@"Data Source=C:\Documents and Settings\Dell\Moje dokumenty\Visual Studio 2010\Projects\SqLite\SqLite\DataBase\DataBase.s3db;Version=3;");
sqlite_conn.Open();
sqlite_cmd = sqlite_conn.CreateCommand();
sqlite_cmd.CommandText = "INSERT INTO data (fname,lname,size,age) VALUES ('"+TFName.Text+"','"+TLName.Text+"',"+TSize.Text+","+TAge.Text+");";
sqlite_cmd.ExecuteNonQuery();
sqlite_cmd.CommandText = "SELECT * FROM data ORDER BY id_data DESC LIMIT 1";
sqlite_datareader = sqlite_cmd.ExecuteReader();
int FId=0;
while (sqlite_datareader.Read())
{
FId= Convert.ToInt32(sqlite_datareader["id_data"]);
}
sqlite_datareader.Close();
sqlite_cmd.CommandText = "INSERT INTO address (street,number,city,id_data) VALUES ('"+ TStreet.Text +"'," +TNumber.Text + ",'" + TCity.Text +"',"+FId+ ");";
sqlite_cmd.ExecuteNonQuery();
sqlite_conn.Close();
i zawsze gdy zostawiam TextBoxa pustego, wyskakuje mi błąd SQLite error near ",": syntax error
błąd ten występuje tylko wtedy gdy textBox jest pusty, który wysyła informacje do bazy gdzie jest pole typu INTEGER, ale przy wysyłaniu pustego textBoxa do pola TEXT w bazie nie występuje błąd.
No to sprawdzaj czy Textbox jest pusty i jezeli jest to wstawiaj tam NULL.
własnie robiłem tak i tez nie działa
TSize.Text = TSize.Text != "" ? TSize.Text : null;
znalazłem już błąd, więc dzięki za pomoc!
a błąd był w zapytaniu SQL sqlite_cmd.CommandText = "INSERT INTO address (street,number,city,id_data) VALUES ('"+ TStreet.Text +"'," +TNumber.Text + ",'" + TCity.Text +"',"+FId+ ");";
gdzie typy INTEGER nie były w apostrofach i kiedy własnie był tam null to program nic tam nie widział i dla niego były tam tylko dwa przecinki, dlatego wyrzucał błąd SQLite error near ",": syntax error
Dobrze a teraz spójrz na swój pierwszy post w tym temacie i zastanów się czy dobrze opisuje on Twój problem, a następnie wymów na głos mocne postanowienie poprawy, że postarasz się bardziej przy zakładaniu nowego tematu na forum.
juli126 napisał(a)
znalazłem już błąd, więc dzięki za pomoc!
a błąd był w zapytaniu SQL sqlite_cmd.CommandText = "INSERT INTO address (street,number,city,id_data) VALUES ('"+ TStreet.Text +"'," +TNumber.Text + ",'" + TCity.Text +"',"+FId+ ");";
gdzie typy INTEGER nie były w apostrofach i kiedy własnie był tam null to program nic tam nie widział i dla niego były tam tylko dwa przecinki, dlatego wyrzucał błąd SQLite error near ",": syntax error
- liczb nie trzeba podawać w apostrofach
- null to co innego niż pusta wartość
- nie możesz podawać null w apostrofach, null to nic, a 'null' to string zawierający napis
- wyobraź sobie konsekwencje tego, że ktoś w wyniku literówki wpisał taki tekst do TStreet.Text: ',
,
, 0); truncate address; -- - co to za konwencja nazewnicza, która wymaga dodania literki T do nazwy zmiennej?
ŁF napisał(a)
- co to za konwencja nazewnicza, która wymaga dodania literki T do nazwy zmiennej?
Mi to wygląda na jakieś Delphi, chyba tam wszystko jest na T.