在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 。
张志敏所有文章遵循创作共用版权协议,要求署名、非商业 、保持一致。在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。
本博客已经迁移到 GitHub , 围观地址: https://beginor.github.io/