sqlite 无法打开数据库文件

vwhgwdsa  于 2022-11-15  发布在  SQLite
关注(0)|答案(6)|浏览(510)
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”文件在我的主机上,我想数据来源是错误的。如果数据库文件在网上托管,如何设置连接的数据源?权限文件在这里没有问题。

zlhcx6iw

zlhcx6iw1#

当我试图打开网络驱动器上的数据库时,我得到了相同的异常(路径以“\myServer\myDbFile...”开头)我将true设置为连接构造函数中的parseViaFramework参数,从而解决了这个问题。

sql_con = new SQLiteConnection(a, true);
dwbf0jvd

dwbf0jvd2#

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

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.防火墙端口允许性。
1.提供数据库的公司/主机允许远程连接。

neekobn8

neekobn83#

我的问题在连接字符串中添加“Journal模式=off;”就解决了
禁用日志文件此选项将完全禁用回滚日志。
数据源=c:\mydb.db;版本=3;日志模式=关闭;

knsnq2tg

knsnq2tg4#

我遇到了同样的问题,并使用类似@“Data Source=C:\ProgramData\proj\lodeDb.db;Version=3;FailIfMissing=False”的查询字符串修复了它
我的意思是,当我使用DB文件的位置的完整路径时,它可以工作,当我使用“~/lodeDb.db”时,它不能工作

whlutmcx

whlutmcx5#

这个解决方案对我很管用:

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);
}
ia2d9nvy

ia2d9nvy6#

我已经通过设置System.Data.SQLite DLL=>PROPERTIES=>Copy local=>“True”解决了这个问题

相关问题