none
windows8.1商店应用 已经连接到数据库 但是并不能指定文件的路径 这个怎么解决 RRS feed

  • 问题

  •         private async Task SetUnitItedm(string XXXXXXXXXXXXX)
            {
                switch (XXXXXXXXXXXXX)
                {
                    case "XXXXXXXXXXXXX":
                        SQLiteAsyncConnection conn = new SQLiteAsyncConnection("XXXXXXXXXXXXXY.db");
                        var allCpus = await conn.QueryAsync<XXXXXXXXXXXXX>("XXXXXXXXXXXXX");
                        foreach (var XXXXXXXXXXXXX in XXXXXXXXXXXXX)
                        {
                            ComboBox.Items.Add(XXXXXXXXXXXXX);
                        }
                        break;
               }
         }

    如上面是我的程序代码代码   涉及隐私的代码我已经换成XXXXX了

    这是我自己的一个方法 我希望走到

    第一个case时,读取我的数据库 

    第二句是设定数据库的条件 

    然后循环的吧所有满足条件的数据库的值塞到ComboBox中

    就是这样一个问题 谢谢大家了

    2015年4月11日 17:09

答案

  • 你好,

    这个算是常见问题了。 no such table这个错误信息实际上是告诉你在数据库的文件中没有发现你想要操作的table。据我所知,造成这个的原因是因为,数据库文件没有拷贝到local storage里面,Sqlite程序集在发现没有找到数据库文件时会自动帮你创建一个空的数据库,当然里面是没有table的,然后错误就发生了。

    我猜你会把数据库文件放在项目的某个文件夹里面,然后在生成app的时候是打包到package里面的,这样当app部署到手机上的时候数据库文件是放在installation folder里面的,你需要把数据库文件拷贝到local storage里面在做相关的操作。请参考下面的方法提前把数据库准备好。

    private async void CopyDatabase()
    {
        bool isDatabaseExisting = false;
    
        try
        {
            StorageFile storageFile = await ApplicationData.Current.LocalFolder.GetFileAsync("Database.db");
            isDatabaseExisting = true;
        }
        catch
        {
            isDatabaseExisting = false;
        }
    
        if (!isDatabaseExisting)
        {
            StorageFile databaseFile = await Package.Current.InstalledLocation.GetFileAsync("Database.db");
            await databaseFile.CopyAsync(ApplicationData.Current.LocalFolder);
        }
    }


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2015年4月14日 2:36

全部回复

  • 代码本身是没有语法错误的 

    在执行到

     var allCpus = await conn.QueryAsync<XXXXXXXXXXXXX>("XXXXXXXXXXXXX");

    后 会提示错误

    应该就是因为已经连接到数据库 但是这个文件是新创建出来的 在程序自己的文件夹下面

    而我又不能定义到我的路径 所以里面都是没数据的

    错误提示是:

    “SQLite.SQLiteException”类型的异常在 XXXXXXXXXXXXX.exe 中发生,但未在用户代码中进行处理

    其他信息: no such table: XXXXXXXXXX


    2015年4月11日 17:15
  • 你好,

    这个算是常见问题了。 no such table这个错误信息实际上是告诉你在数据库的文件中没有发现你想要操作的table。据我所知,造成这个的原因是因为,数据库文件没有拷贝到local storage里面,Sqlite程序集在发现没有找到数据库文件时会自动帮你创建一个空的数据库,当然里面是没有table的,然后错误就发生了。

    我猜你会把数据库文件放在项目的某个文件夹里面,然后在生成app的时候是打包到package里面的,这样当app部署到手机上的时候数据库文件是放在installation folder里面的,你需要把数据库文件拷贝到local storage里面在做相关的操作。请参考下面的方法提前把数据库准备好。

    private async void CopyDatabase()
    {
        bool isDatabaseExisting = false;
    
        try
        {
            StorageFile storageFile = await ApplicationData.Current.LocalFolder.GetFileAsync("Database.db");
            isDatabaseExisting = true;
        }
        catch
        {
            isDatabaseExisting = false;
        }
    
        if (!isDatabaseExisting)
        {
            StorageFile databaseFile = await Package.Current.InstalledLocation.GetFileAsync("Database.db");
            await databaseFile.CopyAsync(ApplicationData.Current.LocalFolder);
        }
    }


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2015年4月14日 2:36