2
我已經創建了以下插入方法,它工作得很好,但我知道它可能更有效。有人能告訴我如何將這種方法轉換爲使用參數和/或提高其效率?SQLite INSERT語句
public static void SQLiteTableINSERT(string tableName)
{
int colCount = 0;
using (SQLiteConnection Conn = new SQLiteConnection(SQLiteConn.Conn))
{
using (SQLiteTransaction sqliteTrans = Conn.BeginTransaction())
{
using (SQLiteCommand cmd = Conn.CreateCommand())
{
DataTableColumnNames();
string query = "INSERT INTO " + tableName + "(";
foreach (string name in DtColumns)
{
query += "[" + name + "]";
++colCount;
if (colCount < DtColumns.Count())
query += ",";
}
query += ")";
query += " VALUES(";
for (int i = 0; i < LocalDataSet.LocalDs.Tables[0].Rows.Count; ++i)
{
cmd.CommandText = query;
foreach (DataColumn col in LocalDataSet.LocalDs.Tables[0].Columns)
{
string temp = LocalDataSet.LocalDs.Tables[0].Rows[i][col, DataRowVersion.Current].ToString();
if (temp == "True")
cmd.CommandText += 1;
else if (temp == "")
cmd.CommandText += 0;
if (temp != "True" && temp != "")
cmd.CommandText += "'" +temp + "'";
cmd.CommandText += ",";
}
cmd.CommandText = cmd.CommandText.Remove(cmd.CommandText.LastIndexOf(","));
cmd.CommandText += ")";
cmd.ExecuteNonQuery();
}
}
sqliteTrans.Commit();
}
}
}
所以我改變了我的代碼,在插入語句的VALUES部分插入(?)的位置,我試圖更新我的代碼以使用參數,但我不斷收到異常: 「提供的參數不足到命令「 我看了我的代碼,一切似乎是正確的,任何人都可以看到這個問題嗎? 我打算在答案中發佈代碼。 謝謝! – Nathan
這聽起來像你會得到的錯誤,如果你不提供每個數據項?例如,如果你有三個?但只傳遞兩個參數。在C/C++中,它可能與空字符串參數有關,甚至是類型不匹配。 –