UI读取本地数据库
1.首先新建一个数据库 可以用火狐自带的sqlite manger 插件
1.打开数据库
<span style="font-size:18px;">static sqlite3 *dbPoint = nil; // 2 定义数据库的指针
@implementation Db
+ (sqlite3 *)openDB // 3 打开数据库
{
//如果已经获得了数据库的指针 直接返回指针
if (dbPoint) {
return dbPoint;
}
NSArray *arrayPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *strPath = [arrayPath firstObject];
strPath = [NSString stringWithFormat:@"%@/db",strPath];
NSLog(@"strpath =======%@",strPath);
//判断文件是否存在 存在不拷贝 否则拷贝
//if ([[NSFileManager defaultManager] fileExistsAtPath:strPath]) {
if (1) {
//获得bundle包的路径 第一个参数是数据库名字 第二个是数据库类型
NSString *sourcePath = [[NSBundle mainBundle]pathForResource:@"NovelRead" ofType:@"sqlite"];
NSLog(@"sourcePath======%@",sourcePath);
NSError *error = nil;
[[NSFileManager defaultManager] copyItemAtPath:sourcePath toPath:strPath error:&error];
if (error) {
NSLog(@"error===%@",error);
}
}
//创建数据库的指针对象
sqlite3_open([strPath UTF8String], &dbPoint);
return dbPoint;
}
@end</span><span style="font-size:24px;">
</span>
2. 数据库中数据的查询
sql语句
select nv_id,nv_author,nv_bookname,nv_type from Novel
<span style="color:#d12f1b;font-size: 20px;"> </span><span style="font-size:24px;color: rgb(51, 204, 0);"> </span><span style="font-size:18px;color:#006600;">NSString *sqlStr = [NSString stringWithFormat:@"select nv_id,nv_author,nv_bookname,nv_type from Novel"];
//通过sql语句进行查询 并且将查询结果赋值给替身 第一个参数是数据库指针 第二个参数是sql语句 第三个参数是对sql语句的长度限制 第四个参数是替身地址 第五个参数写null
int result = sqlite3_prepare_v2(db, [sqlStr UTF8String], -1, &stmt, NULL);//作用:检验sql语句是否正确!</span>
3. 数据库中数据的添加
sql语句
select nv_id,nv_author,nv_bookname,nv_type from Novel
<span style="color:#33cc00;"> NSString *sqlStr = [NSString stringWithFormat:@"insert into Novel (nv_id,nv_author,nv_bookname,nv_type) values (%d,'%@','%@','%@')",model.nid,model.nauthor,model.nbookname,model.ntype];
int result = sqlite3_exec(db, [sqlStr UTF8String], NULL, NULL, NULL);
if (result == SQLITE_OK) {
NSLog(@"添加成功");
}</span>
3. 数据库中数据的删除
<span style="color:#33cc00;">//数据库语句
NSString *sqlStr = [NSString stringWithFormat:@"delete from Novel where nv_id = %d",num];
int result = sqlite3_exec(db, [sqlStr UTF8String], NULL, NULL, NULL);</span>
3. 数据库中数据的修改
<span style="color:#33cc00;"> sqlite3 *db = [Db openDB];
//数据库语句
NSString *sqlStr = [NSString stringWithFormat:@"update Novel set nv_bookname = '%@' where nv_id = %d",name,num];
int result = sqlite3_exec(db, [sqlStr UTF8String], NULL, NULL, NULL);
if (result == SQLITE_OK) {
NSLog(@"修改成功");
}</span>