WinPhone开发数据库相关操作总结

1.首先来说下wp对.sqlite数据库的操作支持,从google,百度,codeplex..等等网站找寻到以下方式;

(1)最古老的要数引用第三方Community.CsharpSqlite.WP.dll程序集来使用的(注意:如果你要操作现有存在的.sqlite数据库,而不是自己从头开始创建数据表,添加数据...等,那么你需要在codeplex网站上找到这个源码,进行相应的修改,这样才能够支持使用,不然会碰到很郁闷的"无法打开数据库连接.."之类的错误)

(2)第二种跟第一种有所类似,不过它的封装有所不同C#-SQLiteWP7.Preview1.Release,这个也在Codeplex上面,代码使用跟第一种类似,不过里面的方法有返回DataReader之类的对象,这样方便我们做相应数据读取操作,虽然数据库也是copy到独立存储根目录下的,不过这里的连接字符串有所不同,格式如下:

"Version=数据库版本号,uri=file:你的数据库完整名称"
 
简单的Code操作流程:
 1 using (SqliteConnection conn = new SqliteConnection("Version=3,uri=file:test.db"))

 2 

 3 {

 4 

 5 conn.Open();

 6 

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

 8 

 9 {

10 

11 cmd.CommandText = "sql语句";

12 

13 cmd.ExecuteNonQuery();

14 

15  

16 

17 cmd.Transaction = conn.BeginTransaction();

18 

19 //sql语句加入参数

20 cmd.CommandText = "INSERT INTO test(col, col2, col3, col4, col5) VALUES(@col, @col2, @col3, @col4, @col5);SELECT last_insert_rowid();";

21 

22 cmd.Parameters.Add("@col", null);

23 

24 cmd.Parameters.Add("@col2", null);

25 

26 cmd.Parameters.Add("@col3", null);

27 

28 cmd.Parameters.Add("@col4", null);

29 

30 cmd.Parameters.Add("@col5", null);

31 

32 cmd.Transaction.Commit();

33 

34 cmd.Transaction = null;
View Code

 

 

(3)如果自己不想改Community.CsharpSqlite.WP这个源码的话,那就在网上找找Vici.CoolStorage.WP7和Vici.Core.WP7这两个程序集,个人感觉这个方式,代码操作简单,性能较第一种好些许;

 1 //注意:先往项目添加Vici.CoolStorage.WP7.dll和Vici.Core.WP7.dll         

 2 string fn = "MNSECRET.DB";//您的数据库名称,注意放在项目根目录下,且设置生成操作为Resource,不复制

 3             Assembly assem = Assembly.GetExecutingAssembly();

 4             string assemeblyName=assem.FullName.Substring(0, assem.FullName.IndexOf(','));

 5             Uri dbURi= new Uri("/" + assemeblyName + ";component/" + fn,

 6       UriKind.Relative);

 7             //程序第一次运行把SQLite数据库Copy到本地存储

 8             StreamResourceInfo sr = Application.GetResourceStream(dbURi);

 9             IsolatedStorageFile iStorage = IsolatedStorageFile.GetUserStoreForApplication();

10             if (!iStorage.FileExists(fn))

11             {

12                 using (var outputStream = iStorage.OpenFile(fn, FileMode.CreateNew))

13                 {

14                     byte[] buffer = new byte[10000];

15                     for (; ; )

16                     {

17                         int read = sr.Stream.Read(buffer, 0, buffer.Length);

18 

19                         if (read <= 0)

20                             break;

21 

22                         outputStream.Write(buffer, 0, read);

23                     }

24                 }

25             }

26             //连接数据库

27             CSConfig.SetDB(fn);

28             //数据操作

29             CSGenericRecordList cslis = CSDatabase.RunQuery("SELECT* FROM CITY");//可以理解为返回一个表格

30              foreach (CSGenericRecord cs in cslis)

31              {

32                  //取表中的每一行数据

33                  string result= cs["数据表字段名"].ToString();

34 

35              }
View Code

关于CSDatabase里面的操作方法,大家可以到http://viciproject.com/wiki/Projects/CoolStorage/WindowsPhone这个网站去看看,可能我使用的有些许性能耗损,请大家一起探讨学习

2.第三方.sqlite数据库性能有点问题,这时候就需要用到自带的.sdf数据库了,这里推荐Vs插件SQL Server Compact Toolbox,它可以创建3.5和4.0版本的数据库,注意Wp貌似支持3.5的,之前我用4.0的,结果悲剧了,后来还是靠SQL Server Compact Toolbox重新创建3.5的,导入数据啥的(建议一张张表导入数据,不然Vs会卡死),利用这个工具我们还可以创建表映射的业务对象和数据上下文啥的,大家一起摸索吧

3.最后附上一个之前大学时代做过的wp7.5应用:http://www.windowsphone.com/zh-cn/store/app/%E6%81%B6%E9%AD%94%E6%9E%9C%E5%AE%9E%E5%9B%BE%E9%89%B4/9a491e8f-29b4-499b-a24b-81e3484eb404  大家多多吐槽哈!!!

(当时只是练练数据库操作技术和开发者提交app操作流程...个人感觉这个应用没多大意义)

 

 

http://www.silverlightchina.net/html/zhuantixilie/winphone7/2012/0318/14558.html

http://www.oschina.net/translate/generate-windows-phone-8-local-database?print

 

你可能感兴趣的:(数据库)