私はコードがありますが、それは常に私にとってはうまくいきません。場合によっては、データベースのロック、時には接続に関するエラーを返します。SQLiteCommandを使用して挿入クエリを作成する方法は?
これはコードです:
string sql = String.Format("insert into {0}({1}) values({2});", tableName, columns, values);
SQLiteConnection myConn = null;
try
{
myConn = new SQLiteConnection(dbConnection);
myConn.Open();
using(SQLiteCommand sqCommand = new SQLiteCommand(sql))
{
sqCommand.CommandText = sql;
int rows = sqCommand.ExecuteNonQuery();
return !(rows == 0);
}
}
finally
{
myConn.Close();
}
私が間違って何?
エラーは次のとおりです。ラインで
No connection associated with this command
в System.Data.SQLite.SQLiteCommand.InitializeForReader() в System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior
behavior) в System.Data.SQLite.SQLiteCommand.ExecuteNonQuery(CommandBehavior behavior) в System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
:
int rows = sqCommand.ExecuteNonQuery();
は個人的に私は 'catch'であるためにあなたのコードの' finally'セクションを変更するだろうし、あなたが 'myConn.Closeを呼び出す必要はありません(){} 'を使用すると、コードブロックを使用しているときにそのオブジェクトを自動的に破棄します。また、Sqliteのロックについてのこの投稿についてはhttps://stackoverflow.com/questions/1800174/how-do-i-stop-theを参照してください。 -the-database-file-is-locked-exception – MethodMan
さて、試してみてくださいが、それは理由だとは思わない。私は今エラーを投稿します – OPV
あなたのエラーは、現在のコードとは何の関係もないようです。あなたはそのInsert文で 'ExecuteReader'を呼び出していません。また、sqlcommand.Commit()を実行して、 'ExecuteReader'を呼び出す場所を見つけてください。 – MethodMan