【问题标题】:read a .db file in C#在 C# 中读取 .db 文件
【发布时间】:2012-06-13 18:51:24
【问题描述】:
 string Path = @"c:\Database\Mydatabase.db";

     string myConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path + ";Extended Properties=Paradox 5.x;";

    // Define the database query    
    string mySelectQuery = "SELECT id,name FROM people WHERE id < 3;";

    // Create a database connection object using the connection string    
    OleDbConnection myConnection = new OleDbConnection(myConnectionString);

    // Create a database command on the connection using query    
    OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection);

    // Open the connection    
    myCommand.Connection.Open();

    // Create a database reader    
    OleDbDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

错误出现在 myCommand.Connection.Open();它说: 'c:\Database\Mydatabase.db' 不是有效路径。确保路径名拼写正确,并且您已连接到文件所在的服务器。

我正在尝试在 C# 中读取 .db 文件。但是,我收到一个错误,我确定该文件位于那里,该错误对我没有意义。请你帮助我好吗 ?或者如何在 C# 中读取 .db(paradox) 数据库文件?

编辑: 字符串路径 = @"c:\Database\";

这种情况的错误是“Microsoft Jet 数据库引擎找不到对象'people'。确保对象存在并且您正确拼写了它的名称和路径名。”

如果我这样更改,C# 如何找到要使用的数据库文件?因为,我没有在任何地方指定文件名“Mydatabase.db”

【问题讨论】:

  • C# 进程是否有权读取该文件?
  • 你看到了吗? connectionstrings.com/paradox "请注意,您应该只指定数据库所在的文件夹。而不是数据库名称本身。"
  • 但是那个错误,听起来可以成功建立连接,并且人员表不存在,也许您缺少用户/模式或其他东西?
  • 可能是一个愚蠢的问题,但是您的屏幕截图显示它是一个 SQLite 数据库,而您的代码是针对 Paradox 数据库的?
  • 就像我说的那样,这可能是一个愚蠢的问题。但是程序标题说“SQLite 数据库浏览器”。文件扩展名没有意义。我经常修改我的 db 文件扩展名,以避免爱管闲事的客户窥视内部。

标签: c# .net database paradox


【解决方案1】:

确认它是一个 SQLite 数据库,我刚刚在手机上下载了它并用 SQLite 查看器查看了它。


您需要为 SQLite 下载 ADO.NET 提供程序:

“官方”版本(来自 SQLite,而非 MS)

http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki

旧版本

http://sqlite.phxsoftware.com/

【讨论】:

  • 是的,没错,但它有.db文件扩展名,是叫paradox文件还是sqlite文件?
  • 它不是 Paradox 文件,因此您无法使用 Jet OLEDB 提供程序连接到它。
  • 好的,我已经安装了,你能举个例子如何在C#中读取sqlite数据库吗?
  • “您能否提供一个示例,如何在 C# 中读取 sqlite 数据库”——这是一个单独的主题。如果遇到困难,您应该试一试并发布一个新问题。 :-)
【解决方案2】:

如果应用程序看不到文件,则很可能是安全问题。而“你”可以访问该文件。应用程序不能。

这是一个网络应用程序吗?如果是这样,那么这就是问题所在。 asp.net/IIS 无法看到其虚拟目录之外的内容。在这种情况下,您需要提升/修改 asp.net 用户帐户的权限才能访问该文件,或者在虚拟目录中移动数据库文件。这是 App_Data 目录的一个很好的候选。

【讨论】:

  • +1。我认为您的权限是正确的,但除非您更改 asp.net 用户帐户的权限,否则“asp.net/IIS 无法在其虚拟目录之外看到”是错误的。几乎所有事情都可以通过 web.config 或 machine.config 完成,而无需更改实际帐户。 MSDN 针对这种情况有an example 的配置。
  • 我以前从未使用过该配置选项。感谢您指出这一点。
【解决方案3】:

改用these 连接字符串之一。

【讨论】:

    【解决方案4】:

    According to this site,您应该只指定文件夹名称,而不是db文件。

    请注意,您应该只指定数据库所在的文件夹 居住。不是数据库名称本身。

    linked MSDN article 表示如果要更新数据,应使用 Jet 4.0 Service Pack 5,否则可能是只读的。在任何情况下,我都建议安装服务包。

    【讨论】:

    • 我也试过了,它不起作用...我收到了那个错误 Microsoft Jet 数据库引擎找不到对象“人”。确保对象存在并且正确拼写其名称和路径名。
    • 这是问题中应该包含的相关信息。该数据库文件中是否有“人员”表?
    • 只是好奇,如果我不指定“Mydatabase.db”之类的文件夹名称,C# 如何在指定文件夹下找到该文件?
    • 如果我按照你说的改变了,C#如何找到要使用的表?
    猜你喜欢
    • 2021-12-20
    • 2012-11-19
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    相关资源
    最近更新 更多