2014-04-29 64 views
0

我正在寫一個簡單的c#應用程序,其中我從文件中讀取一行,分割它,並在適當的轉換後將相應的令牌插入到訪問數據庫中。我正在使用流讀取器逐行讀取輸入文件。這是我的代碼片段。在c#中逐行讀取文件並插入到訪問數據庫中?

using(reader = Streamreader(filepath) 
{ 
    while((line = reader.readline()) != null) 
    { 
     string[] tokens = line.split('\t'); 
     mycommand.commandtext = "INSERT INTO table_name (name, property) VALUES (@xname, @xproperty)"; 
     mycommand.parameters.addwithvalue("@xname", tokens[0]); 
     mycommand.parameters.addwithvalue("@xproperty", float.parse(tokens[1]); 
     mycommand.executenonquery(); 
    } 
} 

的問題是,如果輸入文件中包含6點不同的線條,然後僅與第一線相關聯的值被複制6倍到我的數據庫。我究竟做錯了什麼?

+2

它是'command'還是'mycommand'?你已經在你的示例代碼中使用了兩者。 –

+0

對不起,我的壞!修復! – user2239690

+0

是讀者遍歷所有行,即是否行((line = reader.readline())!= null)分配下一行每次通過循環 – 3dd

回答

1

由於OleDBCommand不支持命名參數,因此無法替換循環中的參數。參數替換是按照您添加參數的順序進行的,因此您必須在每次運行時創建一個新命令,因爲第二個循環運行時會添加第三個和第四個參數(而您只使用兩個參數)。

+0

關於命名參數,他們工作正常的第一行,所以我猜他們應該到處工作。 – user2239690

+0

我想不管你怎麼稱呼他們。我更新了我的答案。 – Console

相關問題