【问题标题】:VB.Net System.Data.OleDb.OleDbException Read-Only DB objectVB.Net System.Data.OleDb.OleDbException 只读 DB 对象
【发布时间】:2015-09-25 14:43:56
【问题描述】:

我目前正在开发一个 VB 应用程序,该应用程序每天从网络文件夹中读取一个新的 Excel 表并将数据复制到数据库。尝试第一次使用我的 dataAdapter 的 fill() 方法时,我遇到了一个错误。错误是“System.Data.OleDb.OleDbException (0x80040E09):无法更新。数据库或对象是只读的。” 这是发生错误的代码的 sn-p(最后一行):

        Dim dt2 As DataTable
        Dim myAdapter2 As Data.OleDb.OleDbDataAdapter
        dt2 = New DataTable()
        myAdapter2 = New Data.OleDb.OleDbDataAdapter(xls_sql, My.Settings.xlsfile)
        myAdapter2.Fill(dt2)

我的查询是基本的:

xls_sql = "SELECT * FROM [" & FN & "]"

这是我的连接字符串设置:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp\;Extended Properties='text;HDR=Yes;FMT = Delimited'

一位同事建议我将属性更改为

="Excel 8.0;HDR=Yes;IMEX=1";

【问题讨论】:

  • "`一位同事建议...使用 IMEX=1" 你试过了吗?如果是并且它有效,那么毫无疑问,如果不是,请提及。如果您还没有尝试过,请尝试一下。
  • 哦,对不起,没有输入足够的。我确实尝试过,它给出了同样的错误
  • 您的文件在网络上。它所在的目录可能没有运行代码的用户帐户的完全访问权限。或者文件本身是只读的

标签: asp.net .net vb.net excel


【解决方案1】:

发现问题。必须编辑 Microsoft Jet Engine 的注册表项,因为它目前只接受少数几种文件类型 - 不包括 .xls。

https://support.microsoft.com/en-us/kb/245407#/en-us/kb/245407

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-03
    • 2017-06-27
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    相关资源
    最近更新 更多