2013-04-22 170 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

相关问题