C#SQLite错误提供给命令的参数不足

时间:2009-10-18 04:22:11

标签: c# sqlite parameters

我收到错误SQLite错误在我的程序中运行insert语句时,为命令提供的参数不足。但是,如果我尝试将数据连续插入两个不同的表中,我只能将其缩小到它。意思是我将数据插入到一个中,因为我使用的是USING语句,所以方法中的所有内容都被填充了。

如果我将数据插入一个表停止调试,重建我的解决方案然后插入另一个表中,则不会发生此错误。

有人有什么想法吗?就像我说的所有内容都封装在使用语句中所以我不知道在内存中会有什么。

这是我的方法:

 public static void SQLiteTableINSERT(string tableName)
    {
        using (SQLiteConnection Conn = new SQLiteConnection(SQLiteConn.Conn))
        {
            using (SQLiteTransaction sqliteTrans = Conn.BeginTransaction())
            {
                using (SQLiteCommand cmd = Conn.CreateCommand())
                {
                    cmd.CommandText = PrepareInsert(tableName);

                    for (int i = 0; i < LocalDataSet.LocalDs.Tables[0].Rows.Count; ++i)
                    {
                        foreach (DataColumn col in LocalDataSet.LocalDs.Tables[0].Columns)
                        {
                            string temp = LocalDataSet.LocalDs.Tables[0].Rows[i][col, DataRowVersion.Current].ToString();
                            cmd.Parameters.AddWithValue("@" + col.ColumnName, temp);                                
                        } 

                        cmd.ExecuteNonQuery();                          
                    }                        
                }

                sqliteTrans.Commit();
            }
        }

        SQLite.SQLiteConn.Conn.Close();
    }

任何想法都会很棒。 感谢。

1 个答案:

答案 0 :(得分:0)

我认为你需要在循环中使用tableName,假设这些表没有相同的模式。

该命令是为名为tableName的表准备的,但是您添加的参数总是来自Tables [0],请尝试Tables [tablename]