WinPhone开发数据库相关操作总结
1.首先来说下wp对.sqlite数据库的操作支持,从google,百度,codeplex..等等网站找寻到以下方式;
(1)最古老的要数引用第三方Community.CsharpSqlite.WP.dll程序集来使用的(注意:如果你要操作现有存在的.sqlite数据库,而不是自己从头开始创建数据表,添加数据...等,那么你需要在codeplex网站上找到这个源码,进行相应的修改,这样才能够支持使用,不然会碰到很郁闷的"无法打开数据库连接.."之类的错误)
(2)第二种跟第一种有所类似,不过它的封装有所不同C#-SQLiteWP7.Preview1.Release,这个也在Codeplex上面,代码使用跟第一种类似,不过里面的方法有返回DataReader之类的对象,这样方便我们做相应数据读取操作,虽然数据库也是copy到独立存储根目录下的,不过这里的连接字符串有所不同,格式如下:
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;
(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 }
关于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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。