SQLite没有正确初始化数据库

时间:2012-05-25 15:44:02

标签: c# wpf database sqlite exception

我的目标是,在输入邮政编码或区号到文本框中时,另一个文本框应该显示城市&该邮编/区号的状态。我确实有一个使用两个Dictionaries工作的方法,但它在开始时有大约15秒的loand时间,并导致大约10倍的RAM使用率。不是最好的解决方案。所以我试图使用SQLite代替数据库文件。一切都在开发计算机上完美运行,但在将其转移到其他机器时,我会遇到几个不同的错误。

第一个是“无法找到sqlite3.dll”,我认为我已经修复但是在我今天上班之前无法确定。但是我已经在我孩子的电脑和妻子的笔记本电脑上试过了,因为他们都没有安装sqlite。

我收到的一个例外是它无法打开数据库。这是我妻子的笔记本电脑,她安装了iTunes,我相信使用sqlite,所以她可能已经有了dll文件。

另一个(在孩子的电脑上)说表ZipCodes不存在。

我已经粘贴了下面的表初始化,这大部分是我在添加DataSet时由VS自动生成的。至于文件,我在计算机之间传输的文件夹中包含的文件是Locations.db3System.Data.SQLite.dllSystem.Data.SQLite.Linq.dll。我使用的是最新版本的SQLite,这是专为.NET 4.0和x64设计的软件包。

我到处寻找这方面的帮助,并且我非常认真地考虑到我愿意坚持更长的加载时间。

public void InitializeDB()
    {
        try
        {
            locationsDataSet = ((LocationsDataSet)App.Current.MainWindow.FindResource("locationsDataSet"));

            locationsDataSetZipCodesTableAdapter = new LocationsDataSetTableAdapters.ZipCodesTableAdapter();
            locationsDataSetAreaCodesTableAdapter = new LocationsDataSetTableAdapters.AreaCodesTableAdapter();

            locationsDataSetZipCodesTableAdapter.Fill(locationsDataSet.ZipCodes);
            locationsDataSetAreaCodesTableAdapter.Fill(locationsDataSet.AreaCodes);

            zipCodesViewSource = ((CollectionViewSource)(this.FindResource("zipCodesViewSource")));
            areaCodesViewSource = ((CollectionViewSource)(this.FindResource("areaCodesViewSource")));

            zipCodesViewSource.View.MoveCurrentToFirst();
            areaCodesViewSource.View.MoveCurrentToFirst();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Database failed to load with exception " + ex.ToString());
        }
    }

XAML

<Window.Resources>
    <main:LocationsDataSet x:Key="locationsDataSet" />
    <CollectionViewSource x:Key="areaCodesViewSource" Source="{Binding Path=AreaCodes, Source={StaticResource locationsDataSet}}" />
    <CollectionViewSource x:Key="zipCodesViewSource" Source="{Binding Path=ZipCodes, Source={StaticResource locationsDataSet}}" />
</Window.Resources>

0 个答案:

没有答案