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";