11
private void SetConnection()
{
     string a = string.Format(@"Data Source={0};Version=3;New=False;Compress=True;", "~/lodeDb.db");
     sql_con = new SQLiteConnection(a);
}

private void ExecuteQuery(string txtQuery)
{
     SetConnection();
     sql_con.Open();
     sql_cmd = sql_con.CreateCommand();
     sql_cmd.CommandText = txtQuery;
     sql_cmd.ExecuteNonQuery();
     sql_con.Close();
}

当我运行到 sql_cmd.ExecuteNonQuery 时,Sqlexception 是“无法打开数据库文件”。我的在线主机上的“lodeDb.db”文件,我认为数据源是错误的。你能告诉我在线托管中是否有 db 文件吗?如何设置数据源进行连接谢谢注意:权限文件在这里没有问题

4

5 回答 5

42

我在尝试打开网络驱动器上的数据库时遇到了同样的异常(路径以“\\myServer\myDbFile ...”开头),我通过将参数放入连接构造函数中true来解决它。parseViaFramework

sql_con = new SQLiteConnection(a, true);
于 2014-03-11T14:09:04.007 回答
5

这是一个连接字符串问题,

SQL Lite 连接字符串格式

基本的 :

Data Source=filename;Version=3;

使用 UTF16 :

Data Source=filename;Version=3;UseUTF16Encoding=True;

带密码:

Data Source=filename;Version=3;Password=myPassword;

使用 3.3x 之前的数据库格式:

Data Source=filename;Version=3;Legacy Format=True;

使用连接池:

Data Source=filename;Version=3;Pooling=False;Max Pool Size=100;

只读连接:

Data Source=filename;Version=3;Read Only=True;

编辑 1:
连接到远程数据库不同,您必须检查以下内容。

  1. 防火墙端口许可。
  2. 公司/主机提供数据库允许远程连接。
于 2012-06-04T02:16:37.020 回答
5

My problem is solved when add "Journal Mode=Off;" in connection string

Disable the Journal File This one disables the rollback journal entirely.

Data Source=c:\mydb.db;Version=3;Journal Mode=Off;

于 2013-05-11T13:57:10.240 回答
1

我遇到了同样的问题,并使用如下查询字符串修复了它:@"Data Source=C:\ProgramData\proj\lodeDb.db;Version=3;FailIfMissing=False"

我的意思是,当我使用完整路径作为数据库文件的位置时,它可以工作,当我使用“~/lodeDb.db”时,它不起作用

于 2017-03-16T10:02:38.930 回答
0

这个解决方案对我有用:

var index = dialog.FileName.IndexOf('\\'); example: "C:\TEST.DB"
if (0 != index) {
    Models.Context.CreateDatabase(dialog.FileName);
    OpenProject(dialog.FileName);
}
else //example: "\\Ceng\Share\MyPC"
{
    var path = dialog.FileName.Replace('\\', '/');
    Models.Context.CreateDatabase(path);
    OpenProject(path);
}
于 2018-08-09T11:19:24.440 回答