使用c#将文本文件导入SQL Server数据库

时间:2013-04-22 17:39:07

标签: c# sql 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

我需要使用c#application将它们插入到我的SQL Server数据库中。我正在使用的代码是:

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();

}

我得到的错误是:

  

无法将类型'string'隐式转换为'char'

2 个答案:

答案 0 :(得分:1)

答案很简单。但是如果你在提问时发布了代码和异常会更好。

请参阅此代码new char[] { ":" },该代码会导致异常并更改

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

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

就是这样。

答案 1 :(得分:-2)

文件的格式是什么?是否以制表符/空格分隔?如果是,您可以创建与该文件的OleDb连接,并将其读入您的reader / dataset对象。

话虽如此,文件有多大?对于较大的文件和.Net 4.0或更高版本,我建议使用流并使用TPL进行并行插入。