我有一些来自某些考勤设备的文本文件。该文件如下所示:
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'
答案 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进行并行插入。