Sqlite 数据库、FMDB 简单使用
来源:互联网 发布:金盾网络机柜 编辑:程序博客网 时间:2024/05/17 23:56
1、通过Sqlite创建数据库。首先导入框架;
//创建数据库的路径;
NSString*path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject]stringByAppendingPathComponent:@"data.sqlite"];
//第一个参数是C类型的字符创。表示路径;第二个参数表示数据库的地址;是sqlite3 类型,返回的参数可以做为是否创建成功的依据;
intsuccess = sqlite3_open(path.UTF8String, &_db);
//创建表:使用create关键字。非查询语句都使用这个函数 sqlite3_exec;
if(success == SQLITE_OK) {
//创建表;加上条件判断 if not exists;如果不存就创建; 不加有可能会报错;
//表table:在创建的时候,一定要设置primary key(主键),并且主键不能频繁更改,且与数据无关;
NSString *sql = @"CREATE TABLE IF NOT EXISTS t_student (id INTEGER PRIMARY KEY AUTOINCREMENT ,name TEXT NOT NULL , score REAL DEFAULT 60.0);";
intsuccessT = sqlite3_exec(_db, sql.UTF8String,NULL,NULL,NULL);
}
//增加数据:使用insert 关键字;
NSString*sql = [NSStringstringWithFormat:@"INSERT INTO t_student (name,score) VALUES ('%@',%f);",name,arc4random_uniform(8000)/100.0 + 20];
intsuccess = sqlite3_exec(_db, sql.UTF8String,NULL,NULL,NULL);
//删除数据:使用delete 关键字;where 是设置条件;这里是 score > 90 的删除;
NSString*sql = @"DELETE FROM t_student WHERE score > 90.0;";
intsuccess = sqlite3_exec(_db, sql.UTF8String,NULL,NULL,NULL);
//更新/修改数据:使用update 和 set 关键字;
NSString*sql = @"UPDATE t_student SET score = 59.9 WHERE score < 60;";
intsuccess = sqlite3_exec(_db, sql.UTF8String,NULL,NULL,NULL);
//查询数据:使用 select 关键字, Like是模糊查询,% 是通配符,这里是查询名字里包含 8 这个字符的学生;
NSString*sql = @"SELECT id,name,score FROM t_student WHERE name LIKE '%8%'";
//期望结果保存在stmt里面
sqlite3_stmt*stmt = nil;
//准备查询 其实 把查询结果保存在stmt指针区域中
/*参数的含义:
sqlite3 *db, 数据库的句柄
const char *zSql, sql语句
int nByte, sql语句的最大长度 -1代表无限制;
sqlite3_stmt **ppStmt, 输出: Statement句柄 获取最终的结果数据
const char **pzTail 输出:保留参数
const char **pzTail 输出:保留参数
*/
intsuccess = sqlite3_prepare_v2(_db, sql.UTF8String, -1, &stmt, NULL);
if(success == SQLITE_OK) {
//一步步获取每一条step拿一条数据 SQLITE_ROW 证明成功拿到数据
while (sqlite3_step(stmt) ==SQLITE_ROW) {
// id 0 name 1 score 2 获取一行中每一列的数据;
const char *name = (const char *)sqlite3_column_text(stmt, 1);
double score = sqlite3_column_double(stmt, 2);
NSLog(@"姓名:%@ 成绩:%f",[NSStringstringWithUTF8String:name],score);
}
}
1、FMDB数据库的创建,FMDB 是对于sqlite的一个封装;是基于对象的;
NSString*path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject]stringByAppendingPathComponent:@"datafmdb.sqlite"];
FMDatabase*database = [FMDatabasedatabaseWithPath:path];
self.database= database;
BOOLsuccess = [database open]; //同过返回值确定是否打开数据库;
2、建表语句,插入,删除,更新都是只用如下方法:
BOOLsuccessT= [self.databaseexecuteUpdate:@"CREATE TABLE IF NOT EXISTS t_student(id INTEGER PRIMARY KEY AUTOINCREMENT ,name TEXT NOT NULL , score REAL);"];
3、查询语句:
//创建sql语句
NSString*sql = @"SELECT id,name,score FROM t_student WHERE score > 60 AND score < 75;";
FMResultSet*result = [self.database executeQuery:sql];
while([resultnext]) {
//name TEXT
NSString*name = [result stringForColumnIndex:1];
//score DOUBLE
doublescore = [resultdoubleForColumnIndex:2];
}
注意:FMDB封装了一套线程安全的数据库;
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject]stringByAppendingPathComponent:@"data.sqlite"];
FMDatabaseQueue *queue = [FMDatabaseQueuedatabaseQueueWithPath:path];
self.queue = queue;
[self.queueinDatabase:^(FMDatabase *db) {
//在block内部的就是线程安全,只所有sql语句都写在这个闭包里面;
BOOL success = [db open];
if (success) {
//非查询语句都是用executeUpdate
BOOL successT= [dbexecuteUpdate:@"CREATE TABLE IF NOT EXISTS t_student(id INTEGER PRIMARY KEY AUTOINCREMENT ,name TEXT NOT NULL , score REAL);”];
}
}];
//事务的开启,当一段数据修改需要一起执行。但是执行一部分之后,程序崩溃了或者停电了;剩下的修改语句不能进行。数据就有可能出错;事务就有这样一个功能,被包装成事务的一段代码,要么全部执行,要么都不执行;就可以避免这种情况;
[self.queueinDatabase:^(FMDatabase *db) {
//开启事务 在这条语句之后的都是一个事务
[db beginTransaction];
//插入需要更新的语句;
//[db rollback]; 这是执行手动回滚;
[db commit];
}];
0 0
- Sqlite 数据库、FMDB 简单使用
- fmdb 数据库简单使用
- FMDB数据库简单使用
- SQLite的简单使用(FMDB)
- fmdb数据库的简单使用
- sqlite 操作(使用FMDB)
- IOS Sqlite使用FMDB
- SQLite数据库简单使用
- 【ios开发】使用FMDB封装类的sqlite数据库操作
- iOS关于SQLite数据库的操作(使用第三方类库FMDB)
- iOS关于SQLite数据库的操作(使用第三方类库FMDB)
- (一一四)使用FMDB操作SQLite数据库
- iOS关于SQLite数据库的操作(使用第三方类库FMDB)
- iOS关于SQLite数据库的操作(使用第三方类库FMDB)
- FMDB方式访问 sqlite 数据库
- iOS FMDB操作sqlite数据库
- FMDB 数据库简单操作
- FMDB 数据库简单用法
- 查找字符串所在的文件
- javaWeb开发过程中小细节总结(1)
- 史上最全的常用iOS的第三方框架
- 解密:JavaScript 模式(use strict)
- Hibernate-关联映射
- Sqlite 数据库、FMDB 简单使用
- ubuntu docker 安装及简单应用
- Xamarin开发安装Visual Studio 2015 update2报错的解决办法
- HTML文档处理(java)
- 关于win10 不能输入中文
- 九度OJ,题目1009-二叉搜索树
- 常用设备接口类GUID
- 每天一命令(7)mv(move (rename) files)
- 图像识别中距离变换的原理及作用详解,并附用OpenCV中的distanceTransform实现距离变换的代码!