System.Data.SQLite.SQLiteException:无法打开数据库文件

时间:2019-06-03 16:12:38

标签: c# sqlite webforms

我创建了一个SQLite数据库。它存储在我的计算机的C:中。

在本地主机中运行时,我的应用程序连接到db ok。但是,当我将Web App部署到Azure时,它将无法连接数据库。

我已经安装了SQLite Nuget软件包。我已经在本地主机上对此进行了测试,并且可以正常工作。

Web Config连接字符串:

<connectionStrings>
<add name="Testdb" connectionString="Data Source=C:\TestSQLite\Testdb.db;Version=3;" providerName="System.Data.SqlLite"/>
</connectionStrings>

Web表单数据源:

<asp:SqlDataSource ID="Testdb" ConnectionString="<%$ ConnectionStrings:Testdb %>" ProviderName="System.Data.SQLite" SelectCommand="select * from BatchNumbers" runat="server">

我希望Web表单显示存储在SQLite数据库表“ BatchNumbers”中的信息

这是错误消息:

[SQLiteException (0xe): unable to open database file]
   System.Data.SQLite.SQLite3.Open(String strFilename, String vfsName, SQLiteConnectionFlags connectionFlags, SQLiteOpenFlagsEnum openFlags, Int32 maxPoolSize, Boolean usePool) +644
   System.Data.SQLite.SQLiteConnection.Open() +5579
   HTML5OfflineApplication.BulkCopy_DataTableToSQLLite.Button1_Click(Object sender, EventArgs e) in C:\Users\Me\OneDrive - Me\Visual Studio\source\repos\Offline\Offline\Secure\BulkCopy_DataTableToSQLLite.aspx.cs:32
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +109
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +31
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3470

我修改了连接字符串并尝试了以下操作:

sql_con = new SQLiteConnection(a, true);

还有

 connectionString="Data source=C:\TestSQLite\Testdb.db; Version=3; FailIfMissing=False"

我认为我的错误是在这里的args事件中,该事件引用了设备上程序无法访问的特定位置:

HTML5OfflineApplication.BulkCopy_DataTableToSQLLite.Button1_Click(Object sender, EventArgs e) in C:\Users\Me\OneDrive - Me\Visual Studio\source\repos\Offline\Offline\Secure\BulkCopy_DataTableToSQLLite.aspx.cs:32

是引起冲突的原因吗?  救命!! Arggghe     在此处输入代码

1 个答案:

答案 0 :(得分:2)

关于您要在用户PC上存储数据库的评论-如果没有用户实际明确地上传/选择数据库,则无法从用户设备打开文件。您需要将特定于用户的数据库存储在服务器上,以便在后面的代码中访问它,或者使用客户端之类的东西,例如带有客户端JavaScript的浏览器localStorage。能够通过Web应用程序访问用户计算机上的文件将是一个巨大的安全问题。

另一种选择是创建客户端应用程序而不是Web应用程序。