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

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

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. conn.Open(); 
  5.  
  6. using (SqliteCommand cmd = conn.CreateCommand()) 
  7.  
  8.  
  9. cmd.CommandText = "sql语句"
  10.  
  11. cmd.ExecuteNonQuery(); 
  12.  
  13.  
  14.  
  15. cmd.Transaction = conn.BeginTransaction(); 
  16.  
  17. //sql语句加入参数 
  18. cmd.CommandText = "INSERT INTO test(col, col2, col3, col4, col5) VALUES(@col, @col2, @col3, @col4, @col5);SELECT last_insert_rowid();"
  19.  
  20. cmd.Parameters.Add("@col"null); 
  21.  
  22. cmd.Parameters.Add("@col2"null); 
  23.  
  24. cmd.Parameters.Add("@col3"null); 
  25.  
  26. cmd.Parameters.Add("@col4"null); 
  27.  
  28. cmd.Parameters.Add("@col5"null); 
  29.  
  30. cmd.Transaction.Commit(); 
  31.  
  32. cmd.Transaction = null

如果自己不想改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.              } 

本文链接:http://wp.662p.com/thread-8290-1-1.html

责任编辑:chenqingxiang 来源: wp.662p
相关推荐

2010-05-31 15:12:44

MySQL数据库

2011-08-30 14:25:06

QT数据库

2011-08-05 14:02:17

MySQL数据库异常处理

2009-08-07 18:07:58

C#数据库开发

2011-08-30 13:40:28

MySQL线程

2019-11-07 15:39:36

数据库MySQL文章

2011-08-18 19:10:27

DB2数据库命令

2009-11-13 17:31:06

ADO.NET Acc

2011-08-24 17:08:28

Oracle数据库归档模式

2010-01-07 17:24:12

VB.NET连接数据库

2016-12-29 12:24:33

MySQL数据库移植

2019-01-02 11:10:40

MySQL数据库数据库设计

2021-07-01 06:19:46

Redis数据库API

2010-01-28 14:42:31

Android数据库

2010-06-30 10:37:55

MS-SQL Serv

2011-08-02 16:43:26

iPhone开发 Ssqlite3 数据库

2009-12-29 11:15:45

ADO数据库

2011-08-01 13:59:22

Oracle数据库命名空间

2009-01-11 09:14:45

Javascript开发总结

2010-09-27 14:54:38

SQL数据库
点赞
收藏

51CTO技术栈公众号