1.首先来说下wp对.sqlite数据库的操作支持,从google,百度,codeplex..等等网站找寻到以下方式;
(1)最古老的要数引用第三方Community.CsharpSqlite.WP.dll程序集来使用的(注意:如果你要操作现有存在的.sqlite数据库,而不是自己从头开始创建数据表,添加数据...等,那么你需要在codeplex网站上找到这个源码,进行相应的修改,这样才能够支持使用,不然会碰到很郁闷的"无法打开数据库连接.."之类的错误)
(2)第二种跟***种有所类似,不过它的封装有所不同C#-SQLiteWP7.Preview1.Release,这个也在Codeplex上面,代码使用跟***种类似,不过里面的方法有返回DataReader之类的对象,这样方便我们做相应数据读取操作,虽然数据库也是copy到独立存储根目录下的,不过这里的连接字符串有所不同,格式如下:
"Version=数据库版本号,uri=file:你的数据库完整名称"
简单的Code操作流程:
- using (SqliteConnection conn = new SqliteConnection("Version=3,uri=file:test.db"))
- {
- conn.Open();
- using (SqliteCommand cmd = conn.CreateCommand())
- {
- cmd.CommandText = "sql语句";
- cmd.ExecuteNonQuery();
- cmd.Transaction = conn.BeginTransaction();
- //sql语句加入参数
- cmd.CommandText = "INSERT INTO test(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);
- cmd.Transaction.Commit();
- cmd.Transaction = null;
如果自己不想改Community.CsharpSqlite.WP这个源码的话,那就在网上找找Vici.CoolStorage.WP7和Vici.Core.WP7这两个程序集,个人感觉这个方式,代码操作简单,性能较***种好些许;
- //注意:先往项目添加Vici.CoolStorage.WP7.dll和Vici.Core.WP7.dll
- string fn = "MNSECRET.DB";//您的数据库名称,注意放在项目根目录下,且设置生成操作为Resource,不复制
- Assembly assem = Assembly.GetExecutingAssembly();
- string assemeblyName=assem.FullName.Substring(0, assem.FullName.IndexOf(','));
- Uri dbURi= new Uri("/" + assemeblyName + ";component/" + fn,
- UriKind.Relative);
- //程序***次运行把SQLite数据库Copy到本地存储
- StreamResourceInfo sr = Application.GetResourceStream(dbURi);
- IsolatedStorageFile iStorage = IsolatedStorageFile.GetUserStoreForApplication();
- if (!iStorage.FileExists(fn))
- {
- using (var outputStream = iStorage.OpenFile(fn, FileMode.CreateNew))
- {
- byte[] buffer = new byte[10000];
- for (; ; )
- {
- int read = sr.Stream.Read(buffer, 0, buffer.Length);
- if (read <= 0)
- break;
- outputStream.Write(buffer, 0, read);
- }
- }
- }
- //连接数据库
- CSConfig.SetDB(fn);
- //数据操作
- CSGenericRecordList cslis = CSDatabase.RunQuery("SELECT* FROM CITY");//可以理解为返回一个表格
- foreach (CSGenericRecord cs in cslis)
- {
- //取表中的每一行数据
- string result= cs["数据表字段名"].ToString();
- }
本文链接:http://wp.662p.com/thread-8290-1-1.html