在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 @ 2011-08-30 13:21 张志敏 阅读(...) 评论(...) 编辑 收藏