SQlite3(轻型数据库)
来源:互联网 发布:淘宝怎么搜到假证 编辑:程序博客网 时间:2024/05/01 23:43
1. main.m文件
#import <Foundation/Foundation.h>#import "SQLManger.h"int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); SQLManger* sql = [SQLManger shareSqlManger]; [sql createTable]; //查 [sql selectMessage]; //增// [sql IncreaseMessage]; //删// [sql DeleteMessage]; //改 [sql changeMessage]; } return 0;}
2. SQLManger.h 文件
#import <Foundation/Foundation.h>#import <sqlite3.h>@interface SQLManger : NSObject{ sqlite3* db;//声明数据库对象}//类方法单例创建实例对象的方法+(SQLManger*)shareSqlManger;//创建数据表-(void)createTable;//查询数据表数据-(void)selectMessage;//增加数据表数据-(void)IncreaseMessage;//删除数据表数据-(void)DeleteMessage;//改变数据表数据-(void)changeMessage;@end
3. SQLManger.m 文件
#import "SQLManger.h"//声明一个全局的静态变量,来记录SQLManger对象是否被创建(定义一个静态区指针 连接数据库 让数据库再程序结束后自动释放)static SQLManger* sqlManger = nil;@implementation SQLManger//类方法单例创建实例对象的方法+(SQLManger*)shareSqlManger{ if (sqlManger == nil) { sqlManger = [[SQLManger alloc]init]; } return sqlManger;}//创建数据表-(void)createTable{// //获取文件的相对路径// NSString* path = [[NSBundle mainBundle]pathForResource:@"nibaba" ofType:@"sqkute"];// //读取plist文件的内容// NSArray* arr = [NSArray arrayWithContentsOfFile:path];// NSLog(@"arr == %@", arr);// //获取家目录// NSString* homePath = NSHomeDirectory();// NSLog(@"家目录:%@",homePath);// //获取Documents路经// NSArray* pathArr1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);// NSString* docuPath = [pathArr1 objectAtIndex:0];// NSLog(@"Documents路径:%@",docuPath);// NSString* path = [docuPath stringByAppendingPathComponent:docuPath];// NSLog(@"path == %@", path);// //这个只限于IOS应用在mac应用中就不适应// //获取数据库路径// NSString* path = @"/Users/user/Downloads/数据库";// //文件管理器// NSFileManager* fileManager = [NSFileManager defaultManager];// //判断数据库是否存在// BOOL fild = [fileManager fileExistsAtPath:path];// // ////如果数据库存在,则用sqlite3_open直接打开(不要担心,如果数据库不存在sqlite3_open会自动创建)// if (fild) {// NSLog(@"文件库存在。。。。");// }else{// NSLog(@"文件库不存在。。。");// } //获取数据库路径 NSString* path = @"/Users/user/Downloads/数据库/nibaba.sqlite"; //打开数据库 //第一个参数是数据库的路径,c的字符串类型 //第二个参数是数据库的对象 //SQLITE_OK 是宏定义代表语句操作成功 if (sqlite3_open([path UTF8String], &db) == SQLITE_OK) { //NSString* createTable = @"CREATE TABLE IF NOT EXISTS STUDENT (sid text primary key,name text)"; NSString* createTable=@"CREATE TABLE IF NOT EXISTS STUDENG (SID TEXT PRIMARY KEY,NAME TEXT);"; //执行创建表的aql语句 //第一个参数是数据库的对象 //第二个参数是sql语句,c的字符串类型 //第三个参数是回调方法 //第四个参数是回调方法的参数 //第五个参数是错误信 char* error; //sqlite3_exec 打开数据库时,如果存在数据库就打开,如果不存在就会创建并打开 if (sqlite3_exec(db, [createTable UTF8String], nil, nil, &error) == SQLITE_OK) { NSAssert(YES, @"数据表格创建成功%s", error); NSLog(@"数据表格创建成功"); }else{ NSAssert(NO, @"数据表格创建失败%s", error); NSLog(@"数据表格创建失败"); } //关闭数据库 sqlite3_close(db); }}//查询数据表数据-(void)selectMessage{ //获取数据库路径 NSString* path = @"/Users/user/Downloads/数据库/nibaba.sqlite"; //打开数据库 if(sqlite3_open([path UTF8String], &db) == SQLITE_OK){ //? 是占位符 NSString* selectSql = @"select *from areaCode where id=?"; //创建语句对象 sqlite3_stmt* stmt; //执行sql语句的预处理 //第一个参数是数据库对象 //第二个参数是执行的sql语句 //第三个参数是语句的执行长度,-1代表全部执行 //第四个参数是语句对象 //第五个参数是没有执行的部分,一般会全部执行,一般填nil sqlite3_prepare_v2(db, [selectSql UTF8String], -1, &stmt, NULL); //绑定参数,并实现查找 //第一个参数是语句对象 //第二个参数是语句编号,从1开始 //第三个参数是所要绑定参数的值 sqlite3_bind_int(stmt, 1, 10); //获取查询出来的值 if (sqlite3_step(stmt) == SQLITE_ROW) { //获取一行数据有多少列 NSLog(@" ====== %d", sqlite3_column_count(stmt)); char* s = (char*)sqlite3_column_text(stmt, 1); NSLog(@" ------ %@",[NSString stringWithFormat:@"%s", s]); //获取ID的值 NSLog(@"------%d",sqlite3_column_int(stmt, 0)); sqlite3_finalize(stmt);//释放语句 }else{ sqlite3_finalize(stmt);//释放语句 sqlite3_close(db); } }else{ sqlite3_close(db); }}//增加数据表数据-(void)IncreaseMessage{ //获取数据库路径 NSString* path = @"/Users/user/Downloads/数据库/nibaba.sqlite"; //打开数据库 if(sqlite3_open([path UTF8String], &db) == SQLITE_OK){ NSString *increase = @"insert into areaCode(id,location,countryCodeID) values (1,'镇魂街',02)"; char* error; //sqlite3_exec 打开数据库时,如果存在数据库就打开,如果不存在就会创建并打开 if (sqlite3_exec(db, [increase UTF8String], nil, nil, &error) == SQLITE_OK) { NSLog(@"增加数据表数据成功"); }else{ NSLog(@"增加数据表数据失败 == %s", error); } }}//删除数据表数据-(void)DeleteMessage{ //获取数据库路径 NSString* path = @"/Users/user/Downloads/数据库/nibaba.sqlite"; //打开数据库 if(sqlite3_open([path UTF8String], &db) == SQLITE_OK){ //删除id为1的一行数据,如果要删两行就 id = 1 or id = 10 ,删除id为1和10行的数据 NSString *Delete = @"delete from areaCode where id = 1"; char* error; //sqlite3_exec 打开数据库时,如果存在数据库就打开,如果不存在就会创建并打开 if (sqlite3_exec(db, [Delete UTF8String], nil, nil, &error) == SQLITE_OK) { NSLog(@"删除数据表数据成功"); }else{ NSLog(@"删除数据表数据失败 == %s", error); } }}//改变数据表数据-(void)changeMessage{ //获取数据库路径 NSString* path = @"/Users/user/Downloads/数据库/nibaba.sqlite"; //打开数据库 if(sqlite3_open([path UTF8String], &db) == SQLITE_OK){ NSString *change = @"update areaCode set location = '镇魂街' WHERE id = 1"; char* error; //sqlite3_exec 打开数据库时,如果存在数据库就打开,如果不存在就会创建并打开 if (sqlite3_exec(db, [change UTF8String], nil, nil, &error) == SQLITE_OK) { NSLog(@"改变数据表数据成功"); }else{ NSLog(@"改变数据表数据失败 == %s", error); } }}@end
阅读全文
1 0
- SQlite3(轻型数据库)
- c#操作轻型数据库SQLite
- SQLite---强大的轻型数据库
- Sqlite轻型数据库初级理解
- 轻型数据库SQLite结合PHP的开发
- 轻型数据库SQLite结合PHP的开发
- 轻型数据库SQLite结合PHP的开发
- 轻型数据库SQLite结合PHP的开发
- 轻型数据库SQLite结合PHP的开发
- 轻型数据库SQLite与Android实例
- 轻型数据库SQLite结合PHP的开发
- 轻型数据库SQLite结合PHP的开发
- sqlite3数据库
- SQLite3数据库
- sqlite3 数据库
- SQLite3数据库
- 数据库sqlite3
- Sqlite3数据库
- 关于python2.x中的编码问题,希望能帮大家少走弯路
- Linux网络编程之TCP套接字
- 【Web开发】第一个网站的建立与部署(一)
- 算法课第18周第1题——55. Jump Game
- hdu 6023 模拟
- SQlite3(轻型数据库)
- jquery插件select2源码解读(二) 流程
- 异常处理
- TIOBE:全球编程语言最新排名(Kotlin排名进入前50名
- 22. Generate Parentheses题解
- git学习
- 用fastjson解析嵌套json数据
- JSP页面间传递参数方法介绍
- 基于TCP协议服务器