C# 如何连接silverlight与sqlite,而不使用IsolatedStorageFile

C# 如何连接silverlight与sqlite,而不使用IsolatedStorageFile,c#,database,silverlight,sqlite,local-storage,C#,Database,Silverlight,Sqlite,Local Storage,或者不使用IsolatedStorageFile连接到任何类型数据库的任何其他方式,数据库是在服务器上还是在用户计算机上 如果它在服务器上,您将希望创建一个访问数据库的WCF服务,然后让Silverlight与WCF服务交互 如果它位于用户计算机上,则无法直接访问本地文件系统。您需要向用户提供一个OpenFileDialog。用户将选择该文件,该文件将作为OpenFileDialog上的FileStream提供 如果这是一个Silverlight OOB应用程序,情况会有一点变化。您可以更多地访

或者不使用
IsolatedStorageFile

连接到任何类型数据库的任何其他方式,数据库是在服务器上还是在用户计算机上

如果它在服务器上,您将希望创建一个访问数据库的WCF服务,然后让Silverlight与WCF服务交互

如果它位于用户计算机上,则无法直接访问本地文件系统。您需要向用户提供一个
OpenFileDialog
。用户将选择该文件,该文件将作为
OpenFileDialog
上的
FileStream
提供

如果这是一个Silverlight OOB应用程序,情况会有一点变化。您可以更多地访问用户的系统,但我对Silverlight OOB不够熟悉,无法提出任何建议

IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();

isf.DeleteFile("mydb.db");

using (SqliteConnection conn = new SqliteConnection())
{
    conn.ConnectionString = "Version=3,uri=file:mydb.db";
    conn.Open();

    using (SqliteCommand cmd = conn.CreateCommand())
    {


        cmd.CommandText = "CREATE TABLE test_table ( [id] INTEGER PRIMARY KEY, [col] INTEGER UNIQUE, [col2] INTEGER, [col3] REAL, [col4] TEXT, [col5] BLOB)";
        cmd.ExecuteNonQuery();

        cmd.Transaction = conn.BeginTransaction();
        cmd.CommandText = "INSERT INTO test_table(col, col2, col3, col4, col5) VALUES(@col, @col2, @col3, @col4, @col5);SELECT last_insert_rowid();";
        cmd.Parameters.Add("@col", null);
        cmd.Parameters.Add("@col2", null);
        cmd.Parameters.Add("@col3", null);
        cmd.Parameters.Add("@col4", null);
        cmd.Parameters.Add("@col5", null);

        DateTime start = DateTime.Now;
        this.lstResult.Items.Add("Inserting 100 Rows with transaction");

        for (int i = 0; i < 100; i++)
        {
            cmd.Parameters["@col"].Value = i;
            cmd.Parameters["@col2"].Value = i;
            cmd.Parameters["@col3"].Value = i * 0.515;
            cmd.Parameters["@col4"].Value = "hello world" + i;
            cmd.Parameters["@col5"].Value = Encoding.UTF8.GetBytes("test");

            object s = cmd.ExecuteScalar();
        }
        cmd.Transaction.Commit();
        cmd.Transaction = null;
        this.lstResult.Items.Add("Time taken :" + DateTime.Now.Subtract(start).TotalMilliseconds + " ms.");

        cmd.CommandText = "SELECT * FROM test_table";
        using (SqliteDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                var bytes = (byte[])reader.GetValue(5);
                this.lstResult.Items.Add(string.Format("{0},{1},{2},{3},{4}, {5}",
                    reader.GetInt32(0),
                    reader.GetInt32(1),
                    reader.GetInt32(2),
                    reader.GetDouble(3),
                    reader.GetString(4),
                    Encoding.UTF8.GetString(bytes, 0, bytes.Length)));
            }
        }

        conn.Close();
    }
}
conn.ConnectionString = @"Version=3,uri=file:d:\mydb.db";