读书人

关于TXT文件导入到DATASET中的有关问题

发布时间: 2013-08-25 10:49:56 作者: rapoo

关于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;
}

读取出来之后进行分隔插入数据库,


另外读取肯定是要在服务端的,所以并不是你把客户端的文件选择到了框框里面就能读取到了,要上传到服务端,然后读取服务端保存的路径下面对应的文件,

或者直接把文件流传递给读取的方法。

读书人网 >C#

热点推荐