2013-04-22 145 views
-1

我有一些來自某些考勤設備的文本文件。該文件是這樣的如下:使用c將文本文件導入到SQL Server數據庫#

010:0007739166:20120908:071009:BLANK !!:11 
010:0013646521:20120908:073125:BLANK !!:11 
010:0010840695:20120908:073129:BLANK !!:11 
010:0005546931:20120908:073131:BLANK !!:11 
010:0013656129:20120908:073136:BLANK !!:11 
010:0010827749:20120908:073222:BLANK !!:11 
010:0009668536:20120908:073251:BLANK !!:11 
010:0009673161:20120908:073410:BLANK !!:11 

我需要插入到我的SQL Server數據庫使用C#應用程序。我正在使用的代碼是:

string[] alllines = File.ReadAllLines(txtFilePath.Text); 

for (int i = 1; i < alllines.Length; i++) 
{ 
    OdbcConnection conn = new OdbcConnection(connstring); 
    conn.Open(); 
    OdbcCommand cmd = new OdbcCommand(); 
    cmd.Connection = conn; 

    string[] items = alllines[i].Split(new char[] { ":" }); 
    string cardno = items[1]; 
    string date = items[2]; 
    string time = items[3]; 
    string datetime = date + " " + time; 
    cmd.CommandText = "insert into tbl_card values('" + cardno + "','" + date + "','" + DateTime.Parse(datetime) + "','Entry','" + System.DateTime.Now.ToString() + "')"; 
    cmd.CommandType = CommandType.Text; 
    OdbcDataReader dr = cmd.ExecuteReader(); 
    conn.Dispose(); 

} 

我得到的錯誤是:

無法隱式轉換爲「字符」

+1

如果您收到一條錯誤消息,請將其發佈?或張貼你試過的東西。 – RandomUs1r 2013-04-22 17:41:17

+0

你可以用bcp導入。 'myfile.txt中的bcp.exe mydb..mytable -S服務器-T -t:'。 bcp.exe附帶了SQL Server客戶端工具,或者您可以從http://www.microsoft.com/en-us/download/details.aspx?id=29065 – 2013-04-22 17:44:38

+1

下載SqlCmdlnUtils.msi'我如何將這些數據導入到我的數據庫使用C#。「你的問題在哪裏?在閱讀和解析文本文件或將它們插入到數據庫? – I4V 2013-04-22 18:59:40

回答

-2

型「字符串」是什麼文件格式?它是製表符/空格分隔嗎?如果是的話,您可以創建一個到文件的OleDb連接並將其讀入您的讀取器/數據集對象。

話雖如此,文件有多大?對於較大的文件和.Net 4.0或更高版本,我建議使用流並使用TPL進行並行插入。

+6

這是一個答案?那麼這個問題不是一個真正的問題,但這些應該是評論 – Steve 2013-04-22 17:44:41

+0

我瞭解你的情緒,但我覺得我已經提供了有效的選擇,考慮到我手頭上的信息量。像問題一樣,答案。有一個+1雖然。 – danish 2013-04-22 17:46:52

+0

你在說什麼都不是回答這個問題。切換到OleDb連接不必要地使事情複雜化。此外,建議並行插入是一個設計問題,與編譯時錯誤沒有任何關係。我建議你刪除這個。 – NotMe 2013-04-22 22:25:45

1

答案很簡單。但如果您在提問時發佈了代碼和例外情況,那會更好。

看到這個代碼new char[] { ":" }從而導致該異常並更改

string[] items = alllines[i].Split(new char[] { ":" }); 

string[] items = alllines[i].Split(new char[] { ':' }); 

這是所有。

+0

或者如果你拼命想分割一個字符串做.Split(new [] {「:」},StringSplitOptions.None); – Loofer 2013-04-22 21:35:07

相關問題