c#datatable无法更新。数据库或对象是只读的
private void Form1_Load(object sender, EventArgs e)
{
GetDataTable(@"C:\Documents and Settings\agordon\Desktop\ACTIVITYEX.log");
}
public System.Data.DataTable GetDataTable(string strFileName)
{
System.Data.OleDb.OleDbConnection conn =
new System.Data.OleDb.OleDbConnection
("Provider=Microsoft.Jet.OleDb.4.0; Data Source = "
+ System.IO.Path.GetDirectoryName(strFileName)
+ ";Extended Properties = \"Text;HDR=YES;FMT=TabDelimited\"");
conn.Open();
string strQuery = "SELECT * FROM [" + System.IO.Path.GetFileName(strFileName) + "]";
System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
System.Data.DataTable ds = new System.Data.DataTable("CSV File");
adapter.Fill(ds);
return ds;
}
当同一个文件被命名为.csv
它不会给我一个错误;但是当我将它重命名为.log
它说Cannot update. Database or object is read-only.
上adapter.Fill
c#datatable无法更新。数据库或对象是只读的
这是一个编译器错误?
* .LOG被禁用的扩展,据我所知只有机器上的方法是更改注册表,将运行这段代码,请参阅Microsoft知识库中article
指出,我给它改名到.log1还是一样的味精 – 2011-06-01 23:49:03
还试图RRR除了CSV – 2011-06-01 23:49:47
其不采取anythign你加r中日志扩展egistry?我知道这听起来不可信,但你必须将它添加到注册表键已禁用的扩展,因为有一个!在前面,这意味着没有,如果!使用这些是允许的扩展名。更奇怪的是,这里有一个详细的解释:http://access.mvps.org/access/bugs/bugs0046.htm – 2011-06-01 23:55:39
一个旧的帖子,但我刚刚进入这个问题。 请参考这篇文章:https://support.microsoft.com/en-us/kb/245407
长话短说:Jet Engine在读取CSV文件(Extended properties = TEXT等)时只接受几个文件扩展名。
解决方案:
- 看完
- 时重命名文件temp文件夹与另一mecanism比JET阅读(标准File.io.ReadAllLines)
- 添加在Windows注册表中的延伸由安东尼奥Bukala
注意解释投票吗? – ChrisWue 2011-06-02 03:38:32