SQLite在iOS中的使用
来源:互联网 发布:淘宝怎么开直播卖衣服 编辑:程序博客网 时间:2024/05/22 17:38
先导入sqlite3.h的头文件
#import "ViewController.h"//导入SQLite3的头文件#import <sqlite3.h>//宏定义数据库文件路径#define kDatabaseFilePath [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/User.sqlite"]
创建数据库文件
- (void)createDataBase { NSFileManager *manager = [NSFileManager defaultManager]; //判断是否存在数据库文件 if (![manager fileExistsAtPath:kDataBaseFilePath]) { //若不存在,创建数据库文件 [manager createFileAtPath:kDataBaseFilePath contents:nil attributes:nil]; } //打印数据库文件地址 NSLog(@"%@", kDataBaseFilePath);}
DDL 数据定义语言
创建表格
- (void)cratteTable { //1打开数据库 //创建数据库指针 sqlite3 *sql = NULL; int result = sqlite3_open([kDataBaseFilePath UTF8String], &sql); if (result != SQLITE_OK) { NSLog(@"打开失败"); return; } //2构造sql语句 NSString *sqlString = @"CREATE TABLE user (id integer PRIMARY KEY AUTOINCREMENT, user_name text UNIQUE NOT NULL, password text NOT NULL)"; //3执行sql语句 /** * 执行DDL sql语句 * * @param sqlite3 数据库指针 * @param sql SQl语句 * @param callback 执行完成的回调,C语言中的函数指针 * @param void* 回调中的第一个参数 * @param errmsg 错误信息 * * @return int */ char *errmsg; result = sqlite3_exec(sql, [sqlString UTF8String], NULL, NULL, &errmsg); //4判断是否执行成功 if (result == SQLITE_OK) { NSLog(@"执行成功,表格创建"); }else { NSLog(@"表格创建失败:%s", errmsg); } //5关闭数据库,释放内存 sqlite3_close(sql);}
//注:执行的DDL sql语句返回值为SQLITE_OKsqlite3_exec(sql, [sqlString UTF8String], NULL, NULL, &errmsg) == SQLITE_OK;
DML 数据操作语言
插入数据
- (void)insertDataWithUserName:(NSString *)userName { //1打开数据库 sqlite3 *sqlite = NULL; int result = sqlite3_open([kDataBaseFilePath UTF8String], &sqlite); if (result != SQLITE_OK) { NSLog(@"打开失败"); return; } //2构造sql语句 NSString *sqlString = @"INSERT INTO user (id, user_name, password) VALUES(?,?,?)"; //3编译SQL语句 //构建SQL句柄 sqlite3_stmt *stmt = NULL; //编译处理SQL语句 /** * 编译一个DML的 SQL语句 * * @param sqlite3 数据库指针 * @param zSql SQl语句 * @param nByte SQL语句的长度 -1表示系统自动计算字符串长度 * @param ppStmt 句柄二级指针 * @param pzTail 编译结束后,剩余的未编译字符串回传 * * @return int */ result = sqlite3_prepare_v2(sqlite, [sqlString UTF8String], -1, &stmt, NULL); if (result != SQLITE_OK) { NSLog(@"语句编译出错"); sqlite3_close(sqlite); return; } //4绑定数据 /** * 绑定integer数据 * * 参数1 需要绑定的SQL语句所在的句柄 * 参数2 需要绑定的数据在SQL语句中所在的位置 * 参数3 绑定的数据 */ sqlite3_bind_int(stmt, 1, 1000); /** * 绑定text数据 * * 参数1 需要绑定的SQL语句所在的句柄 * 参数2 需要绑定的数据在SQL语句中所在的位置 * 参数3 绑定的C语言字符串 * 参数4 字符串的长度 -1代表自动计算 * 参数5 绑定完成的回调函数 */ sqlite3_bind_text(stmt, 2, [userName UTF8String], -1, NULL); sqlite3_bind_text(stmt, 3, [@"123456" UTF8String], -1, NULL); //5执行sql语句 result = sqlite3_step(stmt); if (result == SQLITE_DONE) { NSLog(@"数据插入完成"); }else { NSLog(@"数据插入失败"); } //6关闭句柄和数据库 sqlite3_finalize(stmt); sqlite3_close(sqlite);}
//注:执行的DML sql语句返回值为SQLITE_DONEsqlite3_step(stmt) == SQLITE_DONE;
DQL 数据查询语言
查询数据
- (void)searchData { //1打开数据库文件 sqlite3 *sqlite = NULL; int result = sqlite3_open([kDataBaseFilePath UTF8String], &sqlite); if (result != SQLITE_OK ) { NSLog(@"数据库打开失败"); return; } //2构建SQL语句 NSString *sqlString = @"SELECT user_name, password FROM user WHERE id > ?"; //3编译SQL语句 //构建句柄 sqlite3_stmt *stmt= NULL; //编译语句 result = sqlite3_prepare_v2(sqlite, [sqlString UTF8String], -1, &stmt, NULL); if (result != SQLITE_OK) { NSLog(@"语句编译失败"); sqlite3_close(sqlite); return; } //4绑定数据 sqlite3_bind_int(stmt, 1, 1050); //while循环遍历所有符合条件的数据 //5执行sql语句 while (sqlite3_step(stmt) == SQLITE_ROW) { //从句柄中读取数据 NSString *userName = [NSString stringWithFormat:@"%s", sqlite3_column_text(stmt, 0)]; NSString *password = [NSString stringWithFormat:@"%s", sqlite3_column_text(stmt, 1)]; NSLog(@"用户名:%@ 密码:%@", userName, password); } //6关闭句柄 数据库 sqlite3_finalize(stmt); sqlite3_close(sqlite);}
//注:执行的DQL sql语句返回值为SQLITE_ROWsqlite3_step(stmt) == SQLITE_ROW;
0 0
- SQLite在iOS中的使用
- SQLite 在 iOS 中的简单使用(一个小例子)
- SQLite 在 Java中的使用
- SQLite 在 Java中的使用
- SQLite在swift中的使用
- SQLite在Java中的使用
- Sqlite在android中的使用
- IOS中的sqlite数据库的使用
- IOS中的sqlite数据库的使用
- iOS开发-SQLite数据库在App项目中的设置及使用
- Win8 sqlite 数据库在 winrt 中的使用
- SQLITE 在 ANDROID 中的详细使用
- Sqlite在Android中的简单使用
- SQLITE 源码在自己工程中的使用
- 【Unity】sqlite数据库在Unity中的使用
- sqlite数据库在Python中的使用简介
- iOS中的SQLite数据库
- iOS中的数据库SQLite
- android 请求权限被拒处理方法(使用于6.0以下系统)
- C++四种强制转换
- Cmake-add_subdirectory
- Scala各种符号的含义
- XTOJ1250Super Fast Fourier Transform
- SQLite在iOS中的使用
- js ==与===区别(两个等号与三个等号)
- IT工作方式与学习
- c的信号处理sigaction
- SVN 服务器地址的变更
- Implicit intents with startService are not safe错误的解决方式(转)
- AppBarLayout
- 使用toolbar 注意事项
- onethink使用article:list显示后台文章标题和article:page 实现分页