2012-09-28 153 views
2

我试图做一个SQLite数据库v3的一个非常基本的连接,我使用MonoDevelop的3.0和Mono 2.10,但无法得到连接到数据库。我可以让应用程序创建数据库,但它立即失败尝试连接到它。有什么建议么?我已经开始与不同的数据库,但后来决定让我的应用程序试图创建一个数据库空,然后连接到它。这似乎仍然失败。单无法打开SQLite数据库

SqliteConnection.CreateFile("db\\DataWorksProg.s3db"); 
SqliteConnection conn = new SqliteConnection("Data Source=file:db\\DataWorksProg.s3db"); 
conn.Open(); 

这一小段代码失败,有关无法打开数据库文件中的错误。

Mono.Data.Sqlite.SqliteException: Unable to open the database file 

权限看起来不错,我在项目中有Sqlite3.dll,它似乎工作正常。我错过了什么明显的?我在Visual Studio的一侧还不错,但还是相当新鲜的单声道/ MonoDevelop的环境中工作。

回答

0

这里想通了我的问题,所有的东西,等等。显然不是使用

"Data Source=file:db\\DataWorksProg.s3db" 

我应该一直在使用

"URI=file:db\\DataWorksProg.s3db" 

切换到URI,它按预期工作。我从阅读,根据2.0配置文件,需要代替URI数据源部分的文档想,但我得到了我希望的结果。

4

什么平台?

我不相信你需要创建一个文件。如果没有找到,iirc会创建数据库文件。

FWIW,在Mac上,我做(注意URI一个漂亮的标准路径;我没有用Data Source)...

using System; 
using System.Data; 
using Mono.Data.Sqlite; 

namespace test 
{ 
    class MainClass 
    { 
     public static void Main (string[] args) 
     { 
      IDbConnection conTemp = null; 
      IDbCommand cmdTemp = null; 

      conTemp = (IDbConnection)new SqliteConnection ("URI=file:/Users/userName/mnmh.db"); 
      conTemp.Open(); 
      cmdTemp = conTemp.CreateCommand();   
      cmdTemp.CommandText = "SELECT * FROM employee"; 
      IDataReader drTemp = cmdTemp.ExecuteReader(); 
      while (drTemp.Read()) { 
       Console.WriteLine (drTemp.GetString (0)); 
      } 


     } 
    } 
} 

等等等等

检查显而易见的 - - 你提到你使用

references required

+0

关于平台,现在在Windows上构建,这就是我遇到问题的地方,但希望部署ion Linux – Adam