簡體   English   中英

Android - 無法在Xamarin.forms中打開數據庫(SQLite例外)

[英]Android - Could not open database in Xamarin.forms (SQLite exceptions)

對不起,如果問題之前被問到,但我搜索得很好,以解決這個問題,我沒有找到答案。

我在我的Xamarin表單項目(PCL)中使用SQLite處理本地數據庫。

1-連接在iOS中運行良好但在android中我遇到了這個問題(無法打開數據庫文件)

在此輸入圖像描述

  • 我還設置了“ReadExternalStoarage”和“WriteExternalStoarage”權限。

2-我使用了另一種創建連接路徑的方法:

string documentsPath = System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal);
string path = Path.Combine(documentsPath, "pbcare.db");

通過這種方式,處理數據庫時發生了異常......

        public bool checkLogin (string email, string password)
        {

            if (DB.Table<User> ().Where (user => user.Email == email && user.Password == password)
                            .FirstOrDefault () != null) { // exception caught here
                return true;
            } else {
                return false;
            }
        }

在此輸入圖像描述

但是數據庫中有表格。

注意:即使數據庫文件不存在,第二種方式也會創建連接!

Android將無法將SQLite數據庫與本地系統中的文件一起使用。 path變量必須來自Android系統。 您用於創建路徑的第二種方法是正確的:

var path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
path = Path.combine(path, 'pbcare.db3');

將在Android上為db3文件創建適當的文件路徑。

您引用的下一個問題: no such table: User是由於沒有創建表而引起的。 在使用數據庫之前,需要創建所有必需的表。

var conn = new SQLiteConnection(path);
conn.CreateTable<User>();

如果您這樣做並首先創建User表,那么它應該按預期工作。 Xamarin有一個更深入的教程: https//developer.xamarin.com/guides/cross-platform/application_fundamentals/data/part_3_using_sqlite_orm/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM