2013-10-31 133 views
0

我想將項目從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值,並避免錯誤?

有人可以幫我準確的語法嗎?

+1

很確定你的問題只是索引方法無法添加i + 1。如果你將這些加在括號外面,你可能會擁有它。 – paqogomez

+1

也,你可能想做++而不是i + 1。你每循環增加3次for循環,並且可以簡單地在循環內遞增我。 – paqogomez

+0

嘗試更改列表只有[i],但仍然沒有運氣 – user2788405

回答

2

要將數據庫列聲明爲文本列而不是整數列,請將integer替換爲text

要設置字符串參數,請不要將其轉換爲整數;只需放下Convert.ToInt32調用並直接使用該值。

+0

嘿,我試過你的方法,仍然沒有運氣 - 我仍然收到錯誤「輸入字符串不正確的格式。」 爲什麼會發生這種情況? @CL。 – user2788405

+1

那些虛擬值需要有正確的類型。 –

相關問題