IOS sqlite数据库操作。步骤是:
先加入sqlite开发库libsqlite3.dylib,
新建或打开数据库,
创建数据表,
插入数据,
查询数据并打印
1、新建项目sqliteDemo,添加使用sqlite的库libsqlite3.dylib
2、sqlite 的方法
sqlite3 *db, 数据库句柄,跟文件句柄FILE很类似
sqlite3_stmt *stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句
sqlite3_open(), 打开数据库,没有数据库时创建。
sqlite3_exec(), 执行非查询的sql语句
Sqlite3_step(), 在调用sqlite3_prepare后,使用这个函数在记录集中移动。
Sqlite3_close(), 关闭数据库文件
还有一系列的函数,用于从记录集字段中获取数据,如
sqlite3_column_text(), 取text类型的数据。
sqlite3_column_blob(),取blob类型的数据
sqlite3_column_int(), 取int类型的数据
3、获取沙盒目录,并创建或打开数据库。
viewController.h头文件添加一个成员变量,并包含头文件sqlite3.h
#import <UIKit/UIKit.h>
#import <sqlite3.h>
@interface ViewController : UIViewController
{
sqlite3 *db;
}
@end
在.m文件 定义宏,方面后面使用
#define DBNAME @"personinfo.sqlite"
#define NAME @"name"
#define AGE @"age"
#define ADDRESS @"address"
#define TABLENAME @"PERSONINFO"
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documents = [paths objectAtIndex:0];
NSString *database_path = [documents stringByAppendingPathComponent:DBNAME];
if (sqlite3_open([database_path UTF8String], &db) != SQLITE_OK) {
sqlite3_close(db);
NSLog(@"数据库打开失败");
}
sqlite3_open,如果数据不存在,则创建。运行。这是在沙盒目录下能看到数据库文件(如何打开模拟器沙盒目录请参考:IOS学习之IOS沙盒(sandbox)机制和文件操作(一))
4、创建数据表
创建一个独立的执行sql语句的方法,传入sql语句,就执行sql语句
-(void)execSql:(NSString *)sql
{
char *err;
if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {
sqlite3_close(db);
NSLog(@"数据库操作数据失败!");
}
}
创建数据表PERSONINFO的语句
NSString *sqlCreateTable = @"CREATE TABLE IF NOT EXISTS PERSONINFO (ID INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, address TEXT)";
[self execSql:sqlCreateTable];
运行程序,数据表创建了。怎么知道数据表创建了呢?我们用火狐的Sqlite Manager插件工具打开数据库文件看看。可以在火狐浏览器里安装这个插件。打开
四个字段都出现是表中了。
5、插入数据:
NSString *sql1 = [NSString stringWithFormat:
@"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%@', '%@')",
TABLENAME, NAME, AGE, ADDRESS, @"张三", @"23", @"西城区"];
NSString *sql2 = [NSString stringWithFormat:
@"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%@', '%@')",
TABLENAME, NAME, AGE, ADDRESS, @"老六", @"20", @"东城区"];
[self execSql:sql1];
[self execSql:sql2];
运行程序,插入两条数据,用火狐的sqlite工具查看
6、查询数据库并打印数据
NSString *sqlQuery = @"SELECT * FROM PERSONINFO";
sqlite3_stmt * statement;
if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
char *name = (char*)sqlite3_column_text(statement, 1);
NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name];
int age = sqlite3_column_int(statement, 2);
char *address = (char*)sqlite3_column_text(statement, 3);
NSString *nsAddressStr = [[NSString alloc]initWithUTF8String:address];
NSLog(@"name:%@ age:%d address:%@",nsNameStr,age, nsAddressStr);
}
}
sqlite3_close(db);
打印结果:
2012-06-29 13:25:32.205 sqlitDemo[3587:f803] name:张三 age:23 address:西城区
2012-06-29 13:25:32.206 sqlitDemo[3587:f803] name:老六 age:20 address:东城区
最后关闭数据库。
例子代码:http://download.csdn.net/detail/totogo2010/4400911
分享到:
相关推荐
iOS SQLite数据库的简单demo 包括数据查询,插入,删除,初始化等。
做android和ios开发的一般都用Sqlite数据库,有的时候数据需要批量导入,那么如何导入呢? 在这里,介绍2种方法供大家参考。 一、用sqlite命令 以windows系统为例,linux下命令是一样的。 1.安装...
通过sqlite数据库来保存数据,实现数据的显示,其中将sqlit封装在一个类中,可以很方便使用。其中支持数据的插入,更新。
支持sqlite 保留字作为字段插入. 无需考虑模型属性命名. 支持多主键,单一主键,自增主键数据表创建 支持模型黑名单. 可以自定义部分字段不进行数据库存储操作. 支持模型字段自定义序列化. 无需手动创建数据表. 无需...
SQLite.viewer 一个优雅的库,用于在iOS应用程序中查看,编辑或调试sqlite数据库。 受启发。特征列出可用的数据库列表表运行原始查询去做 插入行 编辑行 删除行 新的用户界面和用户体验用法在AppDelegate.swift文件...
今天终于花了点时间把之前项目中使用到的对SQLite操作的方法整理一下并上传到github上,下载地址:...// 插入语句 - (void)insertTable { // 创建sql语句 NSString *sql = @insert into te
注意插入的数据使用了通配符,这跟iphone直接使用sqlite借口的绑定变量是一样的,后面的通配符匹配的数据。 //插入数据使用OC中的类型 text对应为NSString integer对应为NSNumber的整形 这样我们就查询返回了一条...
适用于任何支持 Common-JS 模块(即 NodeJS、Webpack)并通过 SQLite 数据库提供 WebSQL API 的 JavaScript 环境 适用于在 WebView中支持 HTML5 WebSQL DB 的所有 Cordova 平台: 安卓 IOS 泰森 黑莓10 通过插件...
•支持面向对象,零SQL操作数据库 •支持模拟器版本和真机版本 •支持自定义SQL扩展 •支持1级缓存,万级数据可达到百倍速度获取 •支持c中基础类型映射,推荐使用NSNumber进行封装 •支持分页查询,排序 •支持...
•支持面向对象,零SQL操作数据库 •支持模拟器版本和真机版本 •支持自定义SQL扩展 •支持1级缓存,万级数据可达到百倍速度获取 •支持c中基础类型映射,推荐使用NSNumber进行封装 •支持分页查询,排序 •支持...
前言之前是一直做web开发,对于做web开发的人而言一定熟悉各种ORM,各种语言针对mysql的ORM有很多,比如PHP的各类框架yii,thinkphp,laravel,ruby语言的rails, GO语言的beego等,IOS开发则面对的数据库是sqlite。...
iOS中coredata针对数据库sqlite实现增删改查,并且实现对象当成字段存储,两实体件relationship时数据的存储
1、通过数据库配置文件生成或更新客户端Sqlite数据库的表结构 2、NSDictionary数据自动赋值给模型类对象 3、将模型类对象自动插入Sqlite数据库 4、将Sqlite数据库查询结果自动赋值给模型类对象 5、通过...
支持事务和批处理在Open Helpers期间进行自动版本管理,以进行插入/查询/更新/删除查询使用sqflite_common_ffi在iOS和Android Linux / Windows / DartVM支持下在后台线程中执行的数据库操作文档文档API指南
sqflite SQLite插件。 支持iOS,Android和MacOS... 支持交易和批次打开期间自动进行版本管理插入/查询/更新/删除查询的助手在iOS和Android上的后台线程中执行的数据库操作使用Linux / Windows / DartVM支持文献资料指导
React式数据库框架构建强大的 React 和 React Native 应用程序,可从数百条记录扩展到数万条记录并保持快速 :high_voltage: WatermelonDB :high_voltage: 无论您有多少数据,都立即启动您的应用程序 :chart_...
Xamarin-表格-购物车Xamarin通过替换工具栏项目形成购物车。建立状态平台建造状态Android版 ... 这里的购物车页面使用持久性存储,第二页显示从Web服务获取数据并将其显示在列表视图中,第三页使用本地SQLite数据库插入
Sqlite 一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中 W3C 万维网联盟,创建于1994年,是Web技术领域最具权威和影响力的国际中立性技术标准机构。主要的工作是发展 Web 规范,...
这里的购物车页面使用持久性存储,第二页显示从Web服务获取数据并将其显示在列表视图中,第三页使用本地SQLite数据库插入,编辑,检索和删除记录。 此项目使用进行崩溃报告和分析,这需要iOS和android App机密,...
在iOS和Android上的后台线程中执行的数据库操作 path_provider Flutter插件,用于查找文件系统上的常用位置。 支持iOS和Android。 用法 要使用此插件,请中将path_provider添加为。 国际图书馆 该库提供国际化和...