SQLite3的使用

来源:互联网 发布:美国失业金数据公布 编辑:程序博客网 时间:2024/06/05 07:37
// 拼接数据库地址 
NSString *path =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]; 
NSString *sqlFile = [path stringByAppendingPathComponent:@student.sqlite]; 
// 打开数据 
int result = sqlite3_open(sqlFile.UTF8String, &_db); 
打开数据库会返回一个int类型的返回值,通过该值可以判断创建数据库是否成功 
// 判断是否打开成功 
if (result == SQLITE_OK) { 
NSLog(@打开成功); 
// 创建表 
/* 
第一个参数: 需要执行SQL语句的数据库对象 
第二个参数: 需要执行的SQL语句 
第三个参数: 回调函数 
第四个参数: 第三个参数的参数 
第五个参数: 接收错误信息 
*/ 
// 创建表的sql语句 
NSString *sql = @CREATE TABLE IF NOT EXISTS t_student(id INTEGER PRIMARY KEY AUTOINCREMENT , name TEXT, age INTEGER, score REAL);; 
result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL); 
if (result == SQLITE_OK) { 
NSLog(@创建表成功); 
}else 

NSLog(@创建表失败); 

}else 

NSLog(@打开失败); 

2.插入数据 
NSString *sql = @INSERT INTO t_student(age, score, name) VALUES (‘28’, 100, ‘jonathan’);; 
int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL); 
if (result == SQLITE_OK) { 
NSLog(@插入成功); 

3.修改数据 
int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL); 
if (result == SQLITE_OK) { 
NSLog(@修改成功); 

4.删除数据 
NSString *sql = @DELETE FROM t_student WHERE id = 1; ; 
int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL); 
if (result == SQLITE_OK) { 
NSLog(@删除成功); 
5.查找数据(查询数据 sqlite3操作中, 所有DML语句都是使用sqlite3_exec函数执行SQL语句即可,但是如果是需要查询数据库, 不能使用sqlite3_exec, 因为它并没有返回查询到得结果发给我们) 
NSString sql = @SELECT FROM t_student;; 
sqlite3_stmt *stemt = NULL; 
/* 
第一个参数:需要执行SQL语句的数据库 
第二个参数:需要执行的SQL语句 
第三个参数: 告诉系统SQL语句的长度, 如果传入一个小于0的数, 系统会自动计算 
第四个参数:结果集, 里面存放所有查询到的数据(不严谨) 
*/ 
sqlite3_prepare_v2(_db, sql.UTF8String, -1, &stemt, NULL); 
// 判断有没有查询结果 
while (sqlite3_step(stemt) == SQLITE_ROW) { 
// 取出第一个字段的查询得结果 
const unsigned char *name = sqlite3_column_text(stemt, 1); 
// 取出第一个字段的查询得结果 
int age = sqlite3_column_int(stemt, 2); 
// 取出第一个字段的查询得结果 
double score = sqlite3_column_double(stemt, 3); 
NSLog(@%s %d %f, name, age, score); 
}
0 0