1
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();
    }
}

此代码运行良好,但无论如何都可以连接到我D:驱动器上的数据库

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

或任何其他方式连接到任何类型的数据库而不使用IsolatedStorageFile

4

1 回答 1

0

数据库在服务器上还是用户电脑上?

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

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

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

于 2013-04-08T20:42:41.370 回答