我想将项目从C#中的LIST传输到SQLite中的TABLE。我根本不知道如何做到这一点,直到有人建议我用的参数:将sqlite int表转换为字符串,然后输入列表
这是我最初的尝试:(当然,这是错误的)
SQLiteConnection sqlite_conn;
SQLiteCommand sqlite_cmd;
sqlite_conn = new SQLiteConnection("Data Source=database.db;Version=3;New=True;Compress=True;");
sqlite_conn.Open();
sqlite_cmd = sqlite_conn.CreateCommand();
sqlite_cmd.CommandText = "CREATE TABLE table1 (Seq integer primary key, Field integer , Description integer);";
sqlite_cmd.ExecuteNonQuery();
for (int i = 0; i < 500; i+=3)
{
// Lets insert something into our new table:
sqlite_cmd.CommandText = "INSERT INTO table1 (Seq, Field, Description) VALUES (list[i], list[i+1], list[i+2]);"; THIS IS WHERE PROBLEM OCCURS!
sqlite_cmd.ExecuteNonQuery();
}
sqlite_conn.Close();
}
这是一个用户建议我应该做什么?(加参数和东西):
sqlite_cmd.CommandText = "INSERT INTO table1 (Seq, Field, Description) VALUES (@p1, @p2, @p3)";
sqlite_cmd.Parameters.AddWithValue("@p1", 0); // dummy initial values
sqlite_cmd.Parameters.AddWithValue("@p2", 0);
sqlite_cmd.Parameters.AddWithValue("@p3", 0);
for (int i = 0; i < 500; i+=3)
{
sqlite_cmd.Parameters["@p1"].Value = Convert.ToInt32(list[i]);
** sqlite_cmd.Parameters["@p2"].Value = Convert.ToInt32(list[i+1]); ERROR OCCURS HERE
sqlite_cmd.Parameters["@p3"].Value = Convert.ToInt32(list[i+2]);
sqlite_cmd.ExecuteNonQuery();
}
问题:
在for循环中,如2星所示,我收到一条错误消息:“输入字符串格式不正确。”
我试着看看以前的帖子有这个错误的解决方案,但没有太多的运气到目前为止。
我觉得我的错误是,名单最初具有的字符串值,但后来我试着输入进去整数sqlite的列(请参阅创建原码表语句)
由于原列表值都是字符串,会怎样我只是做一个表insqlite,它存储我的列表中的STRING值,并避免错误?
有人可以帮我准确的语法吗?
很确定你的问题只是索引方法无法添加i + 1。如果你将这些加在括号外面,你可能会拥有它。 – paqogomez
也,你可能想做++而不是i + 1。你每循环增加3次for循环,并且可以简单地在循环内递增我。 – paqogomez
尝试更改列表只有[i],但仍然没有运气 – user2788405