在MonoTouch中正确而简单的使用 Sqlite 数据库

iOS 提供了 Sqlite 作为本地数据库, MonoTouch 同样也提供了 Mono.Data.Sqlite 对 Sqlite 进行了封装。 与 Objective-c 使用 Sqlite 数据库相比, 使用 MonoTouch 进行 Sqlite 数据访问可以很简单,  先来浏览一下 Mono.Data.Sqlite 提供的类库, 有这么几个重要的类, 它们是:

  • SqliteConnection , 继承自 System.Data.Common.DbConnection;
  • SqliteCommand , 继承自 System.Data.Common.DbCommand ;
  • SqliteDataAdapter , 继承自 System.Data.Common.DbDataAdapter ;
  • SqliteDataReader , 继承自 System.Data.Common.DbDataReader ;
  • SqliteFactory , 继承自 System.Data.Common.DbProviderFactory ;
  • SqliteParameter , 继承自 System.Data.Common.DbParameter ;
  • SqliteTransaction , 继承自 System.Data.Common.DbTransaction ;

如果对这些以 Sqlite 开头的类不熟悉的话, 情有可原, 可对 System.Data.Common 下面的类应该再熟悉不过了吧, 没错, 这就是标准的 ADO.Net , 因此只要会 ADO.Net 的开发人员, 几乎可以立即上手, 这正是 MonoTouch 对 .Net 开发人员提供的价值所在。 来看一段下面的代码:

using (var connection = SqliteFactory.Instance.CreateConnection()) {
   connection.ConnectionString = string.Format("data source={0}/northwind.db3; version=3;", Environment.CurrentDirectory);
   var command = connection.CreateCommand();
   command.Connection = connection;
   command.CommandText = "SELECT * FROM Products WHERE CategoryID = ?";
   var parameter = command.CreateParameter();
   parameter.Value = "1";
   command.Parameters.Add(parameter);

   connection.Open();
   var reader = command.ExecuteReader(CommandBehavior.CloseConnection);
   while (reader.Read()) {
      // use reader's data here ...
   }
}

这段代码很普通, 除了使用了一个 SqliteFactory 之外, 和 ado.net 数据访问几乎没有什么区别, 但是, 从这段代码可以看出, 我们项目原有的代码几乎可以原封不动的拿到 MonoTouch 进行编译,  相信很多人都有自己对 ado.net 的封装, 如果有了 MonoTouch , 这些封装可以很方便的移植到 MonoTouch 下。

最后不得不说一句, 对于 .Net 开发人员来说, MonoTouch 真的是一个好东西, 它可以让你尽快加入到 ios 的开发中, 最大限度的将你的 .net 技能延伸到 ios 。

posted on 2011-08-30 13:21 张志敏 阅读(1440) 评论(6) 编辑 收藏

评论

#1楼 2011-08-30 13:45 leslie_      

我感觉用的人不会太多  回复 引用 查看   

#2楼[楼主] 2011-08-30 13:54 张志敏      

@leslie_
对于个人来说, 也许吸引力不大, 但是对于企业来说, 还是相当有诱惑力的。
 回复 引用 查看   

#3楼 2011-08-30 14:29 leslie_      

@张志敏
为什么会对企业吸引大呢?为什么不用xcode而用这个企业?
 回复 引用 查看   

#4楼[楼主] 2011-08-30 14:54 张志敏      

@leslie_
可以重用现有的 .net 逻辑代码, 可以在多个平台(WP7、Silverlight、iOS、Android)之间共享代码, 采用 Mono ,就是为了重用现有的 .net 资源。
 回复 引用 查看   

#5楼 2011-08-30 17:42 Richie Li      

MonoTouch好是好,不过对于个人来说,年费有点贵~  回复 引用 查看   

#6楼[楼主] 2011-08-30 22:16 张志敏      

@Richie Li
人家网站上说了, 许可证永不过期, 需要继续升级服务才要继续给钱。
 回复 引用 查看   

导航

公告

昵称:张志敏
园龄:6年7个月
粉丝:40
关注:0

搜索

 

常用链接

随笔分类(139)

相册

推荐排行榜