我正在尝试与sqlite v3数据库进行非常基本的连接,而我正在使用monodevelop 3.0和Mono 2.10,并且无法连接到数据库。我可以让应用程序创建数据库,但它会立即尝试连接到它。有什么建议?我从一个不同的数据库开始,但后来决定让我的应用程序尝试创建一个空的数据库,然后连接到它。这似乎仍然失败。
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方面做得很好,但在Mono / Monodevelop环境中仍然相当新鲜。
答案 0 :(得分: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));
}
}
}
}
等等
检查显而易见的事项 - 你引用了所有你正在使用的东西等等。
答案 1 :(得分:0)
在这里找出我的问题。显然不是使用
"Data Source=file:db\\DataWorksProg.s3db"
我应该一直在使用
"URI=file:db\\DataWorksProg.s3db"
切换到URI,它按预期工作。我曾经想过在阅读2.0配置文件下的文档时,需要使用DataSource部分而不是URI,但我得到了我正在寻找的结果。