关于TXT文件导入到DATASET中的问题。
大家好,我想讲TXT文件先FILL到DATASET中,获取TXT文件的数量,然后再用SqlBulkCopy将数据写入SQL数据库,现在将TXT数据FILL到DATASET时,FILL那句报错”找不到可安装的 ISAM。“,麻烦各位帮忙指点一下,多谢大家。
OpenFileDialog dlg = new OpenFileDialog();
dlg.Title = "请选择要导入的文件:";
dlg.Filter = "文本文件(*.txt)|*.txt|所有文件|*.*";
dlg.Multiselect = true;
if (dlg.ShowDialog() == DialogResult.OK)
{
string[] FileNames = dlg.FileNames;
foreach (string FileName in FileNames)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data?Source=" + FileName + ";Extended?Properties=Text";
OleDbConnection conn = new OleDbConnection(strConn);
DataSet DS = new DataSet();
OleDbDataAdapter adapter = new OleDbDataAdapter("select * from " + FileName, conn);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
adapter.Fill(DS,"x");
MessageBox.Show(DS.Tables[0].Rows.Count.ToString());
}
}
[解决办法]
txt 不是数据库~
不可以
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + FileName + ";Extended Properties=Text";
OleDbConnection conn = new OleDbConnection(strConn);
DataSet DS = new DataSet();
OleDbDataAdapter adapter = new OleDbDataAdapter("select * from " + FileName, conn);
先考虑怎么将txt读成string
然后才分割成和数据库对应的
最后插入
[解决办法]
1楼正解, txt不是数据库,不可以当数据库来连接查询,只能当作普通的文件读取,
然后既然你要插入数据库的东西,那么这个TXT文件肯定必须是有特定的规律来分割的,
读取出来根据这个分隔分别写入数据库。
public string ReadText()
{
string str = string.Empty;
try
{
if (!File.Exists(HttpContext.Current.Server.MapPath("XXX/XXXXX.txt")))
{
return "";
}
StreamReader sr = new StreamReader(HttpContext.Current.Server.MapPath("XXX/XXX.txt"), System.Text.Encoding.Default);
String text = sr.ReadToEnd(); //全部读取
//string lineText= sr.ReadLine();//逐行读取
str=text
sr.Dispose();
sr.Close();
}
catch
{
}
return str;
}
读取出来之后进行分隔插入数据库,
另外读取肯定是要在服务端的,所以并不是你把客户端的文件选择到了框框里面就能读取到了,要上传到服务端,然后读取服务端保存的路径下面对应的文件,
或者直接把文件流传递给读取的方法。