Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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
C# 使用sqlite在xamarin中连接表_C#_Android_Sqlite_Xamarin.android_Database Connection - Fatal编程技术网

C# 使用sqlite在xamarin中连接表

C# 使用sqlite在xamarin中连接表,c#,android,sqlite,xamarin.android,database-connection,C#,Android,Sqlite,Xamarin.android,Database Connection,我正在使用xamarin和sqlite制作一个android应用程序。我试图在按钮add上连接数据库testdb.sqlite的tableuser,但在调试平板电脑上的应用程序时,我遇到以下错误: SQLite.SQLiteException:无法打开数据库文件:/storage/emulated/0/testdb.SQLite/testdb.SQLite(CannotOpen) 我的代码是: button_add.Click += delegate { ring dbName = "t

我正在使用xamarin和sqlite制作一个android应用程序。我试图在按钮
add
上连接数据库
testdb.sqlite
的table
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;
        }
    }
};

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

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

它应该会起作用;)

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

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'第一个用于创建数据库,一个用于连接。我使用'dbpath'第一个用于创建数据库,一个用于连接