Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite连接问题_Sqlite_Devart_Dotconnect - Fatal编程技术网

SQLite连接问题

SQLite连接问题,sqlite,devart,dotconnect,Sqlite,Devart,Dotconnect,在我的开发机器以外的机器上测试项目时,我遇到了最奇怪的行为。在开发机器上一切正常,但在部署程序时,我收到“打开DbConnection时出错”。InnerException“无法打开数据库文件” 基本上,我在exe文件所在的文件夹中有一个空数据库(仅模式),正如我所说的,在开发机器上一切正常。我正在使用LinqConnect查询SQLite数据库。下面是发生错误的方法(也会收到与访问数据库的任何方法相同的错误) private void LoadAccountsFromDatabase() {

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

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

private void LoadAccountsFromDatabase()
{
var账户=新的ObservableCollection();
变量连接字符串=
Format(“数据源='{0}';版本=3;默认命令超时=10000;”,UserPreferences.DatabasePath);
AccountsGrid.CommittedIt();
AccountsGrid.SelectedItem=null;
MessageBox.Show(connectionString);
尝试
{
使用(var db=newmaindatacontext(connectionString))
{
MessageBox.Show(“步骤4.5”);
var query=来自数据库中的帐户
其中a.Inactive==0 | | a.Inactive==null | | ShowInactiveCheckBox.IsChecked==true
orderby a.AccountName,a.account昵称
选择一个;
尝试
{
MessageBox.Show(“步骤4.6”);
if(query.Any())
{
MessageBox.Show(“步骤4.61”);
foreach(查询中的var项)
{
MessageBox.Show(“步骤4.65”);
账户。添加(项目);
}                            
}
MessageBox.Show(“步骤4.7”);
AccountsGrid.ItemsSource=账户;
MessageBox.Show(“步骤4.8”);
}
捕获(例外e)
{
MessageBox.Show(“帐户添加”+e.Message);
如果(例如,InnerException!=null)
{
MessageBox.Show(例如InnerException.Message);
}
}
}
}
捕获(例外e)
{
MessageBox.Show(“加载帐户”+e.Message);
}
}

我收到“Step4.6”消息,然后是异常。我没有看到“step 4.61”,因此错误似乎出现在
if(query.Any())
行上,这很奇怪,因为基础表是空的,所以没有结果。有人知道这里的问题是什么吗?我确实有使用exe和sqlite3.DLL部署的LinqConnect DLL文件,所以这不应该是问题。

看来我在部署计算机上的正确输出文件夹中缺少sqlite3.DLL。我可以发誓它就在那里,但是当我把整个项目复制到另一台机器上进行测试时,我仍然得到了错误,当我查看
bin
目录时,该DLL不见了。哎呀

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