2013-10-24 64 views
1

我儘可能多地搜索並找不到任何東西來幫助我。所以我所擁有的是一個腳本,用於讀取/分割並將.txt文件中的數據存儲到某些數組中。 (這裏列出的是Vndnbr)。我遇到的麻煩是如何去輸入數組中的每個條目作爲MS Access表中列的條目?這是我到目前爲止有:C#:將數據從字符串數組輸入到MS Access數據庫表

public void AddToDatabase() 
{ 
    OleDbCommand command; 
    OleDbConnection connection = 
     new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;" + 
          "Data Source=filepath"); 
    foreach (string x in Vndnbr) 
    { 
     cmdstringVND[k] = "insert into Table1 (Vndnbr) Values (x)"; 
     k++; 
     command = OleDbCommand(cmdstringVND[k],connection); 
    } 

    command.Parameters.AddWithValue("?", ReadFromFile("filepath")); 
    connection.Open(); 
    command.ExecuteNonQuery(); 
    connection.Close(); 
} 

我不熟悉的訪問圖書館或什麼應該AddwithValue的第一個參數被插入,我只需複印件做一些研究後粘貼這些行。 如果有人可以幫助我如何將數組中的所有數據添加到表中,將不勝感激,謝謝。

回答

3

有很多錯誤,在你的代碼

  • 在你的循環,你不使用參數存儲值爲 插入
  • 你永遠不creare命令。 (使用新)
  • 嘗試只執行的最後一個命令,因爲爲ExecuteNonQuery外循環

    public void AddToDatabase() 
    { 
        string cmdText = "insert into Table1 (Vndnbr) Values (?)"; 
        using(OleDbConnection connection = new OleDbConnection(.....)) 
        using(OleDbCommand command = new OleDbCommand(cmdText, connection)) 
        { 
         connection.Open(); 
         command.Parameters.AddWithValue("@p1", ""); 
         foreach (string x in Vndnbr) 
         { 
          command.Parameters["@p1"].Value = x; 
          command.ExecuteNonQuery(); 
    
         } 
        } 
    } 
    

我已經改變了你的代碼包括using statement正確地關閉和處置連接和命令,然後我已經初始化循環外的命令,傳遞一個公共字符串作爲參數佔位符,並用一個虛擬值初始化該參數。

在循環內我已經用您的Vndnbr列表獲得的實際值替換之前的參數值並執行該命令。

1

你要改變你的SQL這樣的:

"insert into Table1 (Vndnbr) Values (@x)"; 

,然後AddWithValue是這樣的:

command.Parameters.AddWithValue("@x", ReadFromFile("filepath")); 

所有你正在做的是說,此參數的名稱,我希望分配這個值。

+0

ReadFromFile()沒有被識別,你有什麼理由這可能是? –

+0

@JohnSmith,'ReadFromFile'應該是什麼?這是你寫的一個方法嗎?你所期望的東西是否可以隨時用於你目前所在的物體?我不知道'ReadFromFile'是什麼。 –

+0

我正在研究如何正確建立連接並複製粘貼該代碼塊。看着視覺工作室評論說,第二個參數是價值..是@x不是價值?對不起,我很困惑 –