2016-12-10 4 views
0

私はarch linuxでmonodevelopを実行していますが、ローカルデータベースに値を挿入しようとしましたが、ボタンから実行するとアプリケーションが終了します。ファイルが作成され、すべてのフィールドがあります。C#SQLコマンドラインmonodevelop

SqliteConnection m_dbConnection = new SqliteConnection ("Data Source=GOOD_FOOD.sqlite;Version=3;"); 
     m_dbConnection.Open(); 

     int id; 
     string get = "SELECT LAST(id_client) FROM Clienti"; 
     SqliteCommand comSelect = new SqliteCommand (get, m_dbConnection); 

     int? getid = (int?)comSelect.ExecuteScalar(); 
     if (getid.HasValue) { 
      id = Convert.ToInt32(getid) + 1; 
     } else 
     { 
      id = 1; 
     } 

     // create account 

     string create = "INSERT INTO Clienti (id_client, parola, nume, prenume, adresa, email) VALUES (@id, @parola, @nume, @prenume, @adresa, @email)"; 
     SqliteCommand createcmd = new SqliteCommand (create, m_dbConnection); 
     createcmd.Parameters.AddWithValue("@id", id); 
     createcmd.Parameters.AddWithValue ("@parola", password.Text); 
     createcmd.Parameters.AddWithValue("@nume", name.Text); 
     createcmd.Parameters.AddWithValue ("@prenume", secondname.Text); 
     createcmd.Parameters.AddWithValue("@adresa", address.Text); 
     createcmd.Parameters.AddWithValue ("@email", email.Text); 
     createcmd.ExecuteNonQuery(); 

     m_dbConnection.Close(); 
+0

なぜ 'id = Convert.ToInt32(getid)+ 1;' getid'がすでにnull可能な 'int'ですか? 'id = getid.Value +1;'でなければなりません。また、リリースモードではなく、デバッグモードで実行していますか?少なくとも1つの例外が発生すると、少なくとも1つの例外が停止し、エラーのある行が表示されます。例外のない絶対的なクラッシュは非常に奇妙です。 –

+0

私はそのようにしてみます。 –

+0

OK、SQLiteエラーそのような機能はありませんLAST –

答えて

0

soulution: はここに私のコードである 使用試し{}キャッチ{}とID = Convert.ToInt32(のgetId)を変更+ 1。 to id = getid.Value +1; "SELECT LAST(id_client)FROM Clienti"を変更します。 "SELECT id_client FROM Clienti ORDER BY id_client DESC;";