0

我想将 C# 中的 LIST 中的项目转移到 SQLite 中的 TABLE 中。在有人建议我使用参数之前,我不知道该怎么做:

这是我最初的尝试:(当然是错的)

    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 值并避免错误?

有人可以帮我准确的语法吗?

4

1 回答 1

2

要将数据库列声明为文本列而不是整数列,请替换integertext.

要设置字符串参数,不要将其转换为整数;只需挂断Convert.ToInt32电话并直接使用该值。

于 2013-10-31T22:56:12.283 回答