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();
}
Run Code Online (Sandbox Code Playgroud)
当我运行sql_cmd.ExecuteNonQuery时,Sqlexception是"无法打开数据库文件".我的在线托管上的"lodeDb.db"文件,我认为数据源是错误的.可以告诉我在线托管中是否有db文件.如何设置连接的数据通过谢谢注意:权限文件在这里没有问题
除了 IIS 上的“无法打开数据库文件”之外,我似乎无法从 SQLite 中获得任何信息。我确信 SQLite 的错误消息和 Oracle 的错误消息一样粗暴。
Full control以下用户授予对 App_Data 和数据库文件的访问权限:IIS_IUSRS、IUSRS、DefaultAppPool和Everyone。我查看过:
SQLite问题“无法打开数据库文件”(该问题自动消失为用户)和许多其他类似的问题,其中大多数是通过更改权限、更改为可写目录(App_Data应该是可写的,不是吗?)或者将相对路径更改为绝对路径(应该|DataDirectory|解析为)。
<connectionStrings>
<add name="sqlite" connectionString="Data Source=|DataDirectory|\datatables.sqlite;Version=3;" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>Unable to open the database file</ExceptionMessage>
<ExceptionType>System.Data.SQLite.SQLiteException</ExceptionType>
<StackTrace>
at System.Data.SQLite.SQLite3.Open(String strFilename, SQLiteConnectionFlags connectionFlags, SQLiteOpenFlagsEnum openFlags, Int32 maxPoolSize, Boolean usePool) at System.Data.SQLite.SQLiteConnection.Open() at AjaxSource.Models.Database.query(String sql, Dictionary`2 parameters) in D:\Tools\Dropbox\Projects\myprojects\AjaxSource\AjaxSource\Models\Database.cs:line …Run Code Online (Sandbox Code Playgroud)