【问题标题】:connecting table in xamarin using sqlite使用 sqlite 在 xamarin 中连接表
【发布时间】:2016-08-22 08:44:12
【问题描述】:

我正在使用 xamarin 和 sqlite 制作一个 android 应用程序。我正在尝试在按钮add 上连接数据库testdb.sqlite 的表user,但在我的平板电脑上调试应用程序时出现此错误:

SQLite.SQLiteException:无法打开数据库文件:/storage/emulated/0/testdb.sqlite/testdb.sqlite (CannotOpen)

我的代码是:

button_add.Click += delegate
{
    ring dbName = "testdb.sqlite";

    ///  Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
    string dbPath = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.ToString(), dbName);

    // Check if your DB has already been extracted.
    if (!File.Exists(dbPath))
    {
        using (BinaryReader br = new BinaryReader(Assets.Open(dbName)))
        {
            using (BinaryWriter bw = new BinaryWriter(new FileStream(dbPath, FileMode.Create)))
            {
                byte[] buffer = new byte[2048];
                int len = 0;
                while ((len = br.Read(buffer, 0, buffer.Length)) > 0)
                {
                    bw.Write(buffer, 0, len);
                }
            }
        }
    }

    editemail.Text = "I love coding"; 
    // db.createdatabase();

    //folder_loc.Text = folder;
    using (var connection = new SQLiteConnection(System.IO.Path.Combine(dbPath, dbName)))
    {
        //  connection.CreateTable<person>();

        //string query = "select * from test";
        // connection.Query <test> (query);


        var query = connection.Table<user>();

        foreach (var stock in query)
        {
            Console.WriteLine("Stock: " + stock.name);
            editname.Text = stock.name;
        }
    }
};

user 声明:

public class user
{
    public int id { get; set; }

    //public string email { get; set; }

    public string name { get; set; }

    //public string gender { get; set; }
}

【问题讨论】:

    标签: c# android sqlite xamarin.android database-connection


    【解决方案1】:

    好吧,您在代码中定义了两次名称,一次在这里:

    string dbPath = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.ToString(), dbName);
    

    然后当你想打开它时,你使用 dbPath 和 dbName,要么删除 dbName 引用:

        string dbPath = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.ToString(), dbName);
    

    或在:

    (var connection = new SQLiteConnection(System.IO.Path.Combine(dbPath, dbName)))
    

    它应该可以工作;)

    【讨论】:

    • 我使用 'dbpath' 第一个用于创建数据库,一个用于连接
    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2016-07-18
    • 2017-09-02
    • 2018-08-03
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多