您的位置:首页 > 数据库

iOS开发9-iOS操作SQLite数据库增删改查

2015-10-24 19:59 316 查看

iOS开发9-iOS操作SQLite数据库增删改查

代码下载(Xcode7.0.1)

有问题请联系博主,邮箱:nathanlee1987@aliyun.com

1、创建并打开数据库、关闭数据库

//打开数据库
-(void)openDB{
//sqlite3_open//打开数据库
//如果数据库存在,就打开;
//不存在,就创建再打开。
//第1个参数是数据库路径,第2个参数是数据库指针,调用数据库时使用
int result =  sqlite3_open(self.dataBasePath.UTF8String, &db);

if (result==SQLITE_OK)
NSLog(@"数据库打开成功");
else
NSLog(@"数据库打开失败");
}
//关闭数据库
-(void)closeDB{

//关闭数据库
int result =  sqlite3_close(db);

if (result==SQLITE_OK)
NSLog(@"数据库关闭成功");
else NSLog(@"数据库关闭失败");
}


2、创建表

//创建表
-(void)createTable{
//1.准备sql语句  设置表名,字段,设置逐渐
NSString *sqlString=@"create table  if not exists myTable(m_id integer primary key autoincrement not null,m_name text,m_age integer) ";

//2.执行sql语句
int result = sqlite3_exec(db, sqlString.UTF8String, NULL, NULL, NULL);

if (result==SQLITE_OK)
NSLog(@"建表成功");
else NSLog(@"建表失败");

}




3、增-添加记录

//增
-(void)insertWithName:(NSString*)name age:(NSInteger)age{

//步骤
//1.准备sql语句
//2.创建伴随指针
//3.预执行
//4.绑定参数
//5.执行
//6.关闭伴随指针

//1.准备sql语句
//这样很危险-sql注入的漏洞
//blob类型也无法插入
//NSString *s=[NSString stringWithFormat:@"insert into stu (s_name ,s_age) values (%@,%ld)",name,age];

//安全的方式
NSString *sqlString=@"insert into myTable (m_name ,m_age) values (?,?)";

//2.创建伴随指针
sqlite3_stmt *stmt=NULL;
//3.预执行//-1 整型最大值--多少数据
int result = sqlite3_prepare(db, sqlString.UTF8String, -1, &stmt, NULL);

if (result==SQLITE_OK) {

NSLog(@"预执行正确");

//4.绑定参数
//第一个问号
sqlite3_bind_text(stmt, 1, name.UTF8String, -1, NULL);
//第二个问号
sqlite3_bind_int64(stmt, 2, age);//age NSInteger

//5.执行
if(sqlite3_step(stmt)==SQLITE_DONE)
NSLog(@"插入成功");
else NSLog(@"插入失败");

}
else NSLog(@"预执行错误");

//6.关闭伴随指针
sqlite3_finalize(stmt);
NSLog(@"关闭【添加】伴随指针");

/*
//不关闭伴随指针,关闭数据库会出错
2015-10-24 16:14:21.088 [3617:227363] 数据库打开成功
2015-10-24 16:14:21.090 [3617:227363] 预执行正确
2015-10-24 16:14:21.092 [3617:227363] 插入成功
2015-10-24 16:14:21.092 [3617:227363] 数据库关闭失败
*/

}


4、删-删除记录

//删
-(void)deleteWithName:(NSString*)name{
//步骤
//1.准备sql语句
//2.创建伴随指针
//3.预执行
//4.绑定参数
//5.执行
//6.关闭伴随指针

//1.准备sql语句
NSString *sqlString=@"delete from myTable  where m_name = ?";
//2.创建伴随指针
sqlite3_stmt *stmt=NULL;

//3.预执行
int result = sqlite3_prepare(db, sqlString.UTF8String, -1, &stmt, NULL);

if (result==SQLITE_OK) {

NSLog(@"预执行成功");

//4.绑定参数
sqlite3_bind_text(stmt, 1, name.UTF8String, -1, NULL);

//5.执行
if (sqlite3_step(stmt)==SQLITE_DONE)
NSLog(@"执行成功");
else NSLog(@"执行失败");

}
else NSLog(@"预执行失败");

//6.关闭伴随指针
sqlite3_finalize(stmt);
NSLog(@"关闭【删除】伴随指针");
}


5、改-修改数据



//改
-(void)updateWithAge:(NSInteger)age{
//1.准备sql语句
//2.伴随指针
//3.预执行
//4.绑定参数
//5.执行
//6.关闭伴随指针

//1.准备sql语句
NSString *sqlString=@"update myTable set m_age = 100 where m_age = ?";

//2.伴随指针
sqlite3_stmt *stmt=NULL;

//3.预执行
int result = sqlite3_prepare(db, sqlString.UTF8String, -1, &stmt, NULL);

if (result==SQLITE_OK) {

NSLog(@"预执行成功");

//4.绑定参数
sqlite3_bind_int64(stmt, 1, age);

//5.执行
if (sqlite3_step(stmt)==SQLITE_DONE)
NSLog(@"执行成功");
else NSLog(@"执行失败");

}
else NSLog(@"预执行失败");

//6.关闭伴随指针
sqlite3_finalize(stmt);
NSLog(@"关闭【修改】伴随指针");

}


6、查-查找数据

//查
-(void)selectWithName:(NSString*)name{
//1.sql语句
//2.伴随指针
//3.预执行
//4.绑定参数
//5.执行(N次,因为有可能有N条数据符合条件)
//6.关闭伴随指针

//1.sql语句 //尽量不要用 select *  除非数据库表的字段太多
NSString *sqlString=@"select m_id,m_name,m_age from myTable where m_name=?";

//2.伴随指针
sqlite3_stmt *stmt=NULL;

//3.预执行
int result = sqlite3_prepare(db, sqlString.UTF8String, -1, &stmt, NULL);

if (result==SQLITE_OK) {

NSLog(@"语句正确");

//4.绑定参数
sqlite3_bind_text(stmt, 1, name.UTF8String, -1, NULL);

//5.执行(N次,因为有可能有N条数据符合条件)//循环判断是否还有符合查询条件的数据
while (sqlite3_step(stmt)==SQLITE_ROW) {

int m_id = sqlite3_column_int(stmt, 0);
NSLog(@"m_id=%d",m_id);

NSString * m_name =[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)];
NSLog(@"m_name=%@",m_name);

int m_age = sqlite3_column_int(stmt, 2);
NSLog(@"m_age=%d",m_age);

}

}
else NSLog(@"语句错误");

//6.关闭伴随指针
sqlite3_finalize(stmt);
NSLog(@"关闭【查询】伴随指针");
}


代码下载(Xcode7.0.1)

有问题请联系博主,邮箱:nathanlee1987@aliyun.com

著作权声明:本文由http://my.csdn.net/Nathan1987_原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: