今天研究了一下使用oledb读取txt文档,挺人说这样的速度比较快,以下是实现的代码:
#region <DataconnectionTxt> Text 文檔操作 OLE DB
/// <summary>
/// 操作TXT文件 OLE DB
/// </summary>
/// <param name="txtfolder">txt文件所在的文件夾的路徑</param>
public OleDbConnection DataconnectionTxt(string txtfolder)
{
_dBconnstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtfolder + ";Extended Properties='text;HDR=no;FMT=Delimited';";
var txtconnection = new OleDbConnection(_dBconnstring);
try
{
txtconnection.Open();
return txtconnection;
}
catch (Exception)
{
throw new Exception("無法連接給出的目錄,請重新確定路徑的正確性!");
}
}
#endregion
#region <SqlDatasetTxt> 通過SQL查詢文件夾中的TXT文本文件
/// <summary>
/// OLEDB讀取txt文檔
/// </summary>
/// <param name="oleDbConnection">數據連接</param>
/// <param name="sqlstr">數據連接字符串</param>
/// <returns>返回dataset數據集</returns>
/// 文檔的格式何種要,列之間必須用“,”隔開,程式讀取時會按照“,”進行分列
public DataSet SqlDatasetTxt(OleDbConnection oleDbConnection,string sqlstr)
{
var tempdateset=new DataSet();
try
{
var oleDbCommand=new OleDbCommand(sqlstr,oleDbConnection);
var oleDbDataAdapter=new OleDbDataAdapter(oleDbCommand);
oleDbDataAdapter.Fill(tempdateset);
return tempdateset;
}
catch (Exception exception)
{
if (oleDbConnection.State!=ConnectionState.Closed)
{
oleDbConnection.Close();
}
throw new Exception(exception.Message);
}
finally
{
oleDbConnection.Close();
}
}
#endregion
执行代码:
var aa=new DataFileGet();
dataGridView1.DataSource= aa.SqlDatasetTxt(aa.DataconnectionTxt("d:/1"), "select * from 11.TXT").Tables[0];
1.SqlDatasetTxt 操作的方法
2.d:/1--------------------》D盘下的1文件夹
3.11.txt----------------》需要读取的文件
11.txt文件内容:
11,222
1
1
1
1
1
1
1
1
1
1
11
1,111,111,11,111
注意列之间是 用“,”隔开的否则只能读到一列数据,这就是为什么网上好多人说为什么读不全数据的原因。
代码测试framework3.5+xp通过。