|
|
1
4
最有可能的问题是相对路径(目录)。 如果数据库文件不存在,则SQLite将创建该文件,因此您将永远不会收到“找不到数据库文件”消息。错误路径的第一个指示是“表丢失”。 我个人的经验是,尽管这违背了我的程序员的直觉,但总是使用一个绝对(完全限定的)路径/文件名作为sqlite数据库。 如果你把文件放在完整的位置,比如“/var/myapp/vault.db”,你应该没问题。 如果这很容易在存储区中移动,从属性/config文件中选取文件名--“config file not found”比“table not found”更容易处理。 |
|
|
2
3
啊! 这个代码有3个大问题。请按如下方式更新以修复其中两个:
这将通过参数化查询(而不是直接替换值)来防止SQL注入,并通过确保正确处理连接(即使引发异常)来防止数据库锁定问题。 第三个问题是你应该 从未 将纯文本密码存储在您的数据库中(或任何其他地方)。在存储或比较密码之前,请阅读有关如何在.NET中散列值以及散列和盐化密码的内容。 完成后,重新测试您的代码,看看您是否仍然得到和以前一样的错误报告。我们需要确保这不会解决问题或引入新的东西。然后我们可以开始解决丢失的表问题,也许可以通过检查 connection string . |
|
|
3
0
我有一个与sqlite(via.net)类似的错误,它拒绝相信表存在,即使直接访问确认表存在。该错误只能在一台机器上产生,而不能在其他机器上产生。硬编码路径似乎无法解决问题。修复方法是以管理员身份运行程序,或者将数据库文件更改为对所有人都可用。显然,当实际问题是访问限制时,.NET程序集会引发一个缺少表的错误。 |