2009-10-18 85 views
0

我得到錯誤SQLite錯誤在程序中運行插入語句時提供給命令的參數不足。不過,我已經把它縮小到只有當我試圖連續將數據插入到兩個不同的表中時纔會發生。這意味着我將數據插入到一個數據中,並且自從使用USING語句以來,方法中的所有內容都會被插入。C#SQLite錯誤提供給命令的參數不足

如果我將數據插入到一個表中,則不會發生此錯誤,請停止調試,重新構建解決方案,然後插入其他表中。

任何人有任何想法?就像我說的一切都使用語句封裝,所以我不知道什麼是在內存中。

這裏是我的方法:

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(); 
    } 

任何想法將是巨大的。 謝謝。

回答

0

我認爲你需要在循環中使用tableName,假設這些表沒有相同的模式。

該命令與名稱TableName表準備,但要添加的PARAMS總是從表[0],嘗試表[表名]

+0

在這種情況下,字符串tablename是錯過領先的,因爲它實際上是被導入的excel文件的名稱。我從來沒有將實際的DataSet TableName設置爲任何東西,這就是爲什麼我只使用索引。 這對於事物的宏偉計劃真的很重要嗎? – Nathan 2009-10-18 04:50:50