【问题标题】:SQLite connection issuesSQLite 连接问题
【发布时间】:2014-02-12 23:22:10
【问题描述】:

尝试在我的开发机器以外的机器上测试项目时,我遇到了最奇怪的行为。在开发机器上一切正常,但是在部署程序时,我收到“打开 DbConnection 时出错”。带有 InnerException “无法打开数据库文件。”

基本上,我在与 exe 文件相同的文件夹中有一个空数据库(仅模式),就像我说的,在开发机器上一切正常。我正在使用 LinqConnect 查询 SQLite 数据库。这是出现错误的方法(任何访问数据库的方法也会收到相同的错误)。

private void LoadAccountsFromDatabase()
{
    var accounts = new ObservableCollection<Account>();
    var connectionString =
        string.Format("Data Source='{0}';Version=3;Default Command Timeout=10000;", UserPreferences.DatabasePath);
    AccountsGrid.CommitEdit();
    AccountsGrid.SelectedItem = null;

    MessageBox.Show(connectionString);
    try
    {
        using (var db = new MainDataContext(connectionString))
        {
            MessageBox.Show("step 4.5");
            var query = from a in db.Accounts
                where a.Inactive == 0 || a.Inactive == null || ShowInactiveCheckBox.IsChecked == true
                orderby a.AccountName, a.AccountNickname
                select a;

            try
            {
                MessageBox.Show("step 4.6");
                if (query.Any())
                {
                    MessageBox.Show("step 4.61");
                    foreach (var item in query)
                    {
                        MessageBox.Show("step 4.65");
                        accounts.Add(item);
                    }                            
                }

                MessageBox.Show("step 4.7");
                AccountsGrid.ItemsSource = accounts;
                MessageBox.Show("step 4.8");
            }
            catch (Exception e)
            {
                MessageBox.Show("accounts add " + e.Message);
                if (e.InnerException != null)
                {
                    MessageBox.Show(e.InnerException.Message);
                }
            }
        }
    }
    catch (Exception e)
    {
        MessageBox.Show("load accounts " + e.Message);
    }
}

我收到“步骤 4.6”消息,然后是异常。我没有看到“步骤 4.61”,所以看起来错误出现在 if (query.Any()) 线上,这很奇怪,因为基础表是空的,所以没有结果。有谁知道这里可能是什么问题?我确实有与 exe 以及 sqlite3.dll 一起部署的 LinqConnect DLL 文件,所以这不应该是问题。

【问题讨论】:

    标签: sqlite devart dotconnect


    【解决方案1】:

    看来我在部署机器上的正确输出文件夹中缺少 sqlite3.dll。我可以发誓它就在那里,但是当我将整个项目复制到另一台机器上进行测试时,我仍然收到错误,当我查看bin 目录时,该 DLL 丢失了。糟糕!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多