SQLite数据库
来源:互联网 发布:jquery 方法与js种方法 编辑:程序博客网 时间:2024/06/16 05:44
准备工作:引入libsqlite3.0.dylib框架
先建立一个Student类
声明:
@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *sex;
@property(nonatomic,copy)NSString *age;
建立SQLite工具类DataBaseHandle
#import <Foundation/Foundation.h>@class Student;@interface DataBaseHandle : NSObject+(DataBaseHandle *)sharDB;//获取documents路径-(NSString *)documentsPath;//打开数据库-(void)openDB;//关闭数据库-(void)closeDB;//创建表-(void)createTable;//插入信息-(void)insertStuden:(Student *)stu;//修改信息-(void)updateMessage;//删除信息-(void)deleteMessage;//查找全部-(void)selectAllStudent;//条件查找-(void)selectWithSex:(NSString *)sex;@end
实现 .m
#import "DataBaseHandle.h"#import <sqlite3.h>#import "Student.h"static DataBaseHandle *database=nil;@implementation DataBaseHandle#pragma mark 实现单例+(DataBaseHandle *)sharDB{ if (nil==database) { database=[[DataBaseHandle alloc] init]; } return database;}-(NSString *)documentsPath{ NSString *documentsPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; return documentsPath;}//在操作数据库之前,引入框架//声明一个数据库的对象static sqlite3 *db=nil;#pragma mark 打开数据库-(void)openDB{ if (nil==db) { //拼接数据库存放路径 NSString *dbPath=[[self documentsPath]stringByAppendingString:@"/student.sqlite"]; //根据路径打开数据库 //如果该路径下没有数据库就自动创建一个 //打开数据库 int result= sqlite3_open(dbPath.UTF8String, &db); //判断是否执行成功 if (result==SQLITE_OK) { NSLog(@"数据库打开成功"); } else{ NSLog(@"数据库打开失败"); } }}//关闭数据库-(void)closeDB{ //执行数据库关闭 int result= sqlite3_close(db); if (result==SQLITE_OK) { //如果关闭成功,置为nil db=nil; NSLog(@"数据库关闭成功"); } else{ NSLog(@"数据库关闭失败"); }}#pragma mark 创建表-(void)createTable{ //要创建表,就要使用sql语句 //sql语句在这是以字符串的形式存在的 NSString *createString=@"CREATE TABLE IF NOT EXISTS student (sid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , sname TEXT, ssex TEXT, sage TEXT)"; //执行sql语句 int result= sqlite3_exec(db, createString.UTF8String, NULL, NULL, NULL); if (result ==SQLITE_OK) { NSLog(@"建表成功"); }else{ NSLog(@"建表失败"); } }#pragma mark 插入数据-(void)insertStuden:(Student *)stu{ //准备插入语句 NSString *insertString=[NSString stringWithFormat:@"INSERT INTO student (sname,ssex,sage) VALUES ('%@','%@','%@')",stu.name,stu.sex,stu.age]; //执行语句 int result= sqlite3_exec(db, insertString.UTF8String, NULL, NULL, NULL); if (result ==SQLITE_OK) { NSLog(@"插入成功"); }else{ NSLog(@"插入失败"); }}#pragma mark 修改数据-(void)updateMessage{ //准备修改sql语句字符串 NSString *updateString=@"UPDATE student SET sage = '95' ,sname='陈贵阳' WHERE sid = 2"; int result= sqlite3_exec(db, updateString.UTF8String, NULL, NULL, NULL); if (result==SQLITE_OK) { NSLog(@"修改成功"); }else{ NSLog(@"修改失败"); } }#pragma mark 删除数据-(void)deleteMessage{ //删除语句 NSString *deleteString=@"delete from student where sid=1"; int result=sqlite3_exec(db, deleteString.UTF8String, NULL, NULL, NULL); if (result==SQLITE_OK) { NSLog(@"删除成功"); }else{ NSLog(@"删除失败"); }}#pragma mark 查找全部-(void)selectAllStudent{ //准备查找语句 NSString *selectAll=@"SELECT * FROM student"; //创建伴随指针 sqlite3_stmt *stmt=nil; //预备执行 int result=sqlite3_prepare(db, selectAll.UTF8String, -1, &stmt, NULL); if (result==SQLITE_OK) { //在没有查找完之前一直循环执行的 while (sqlite3_step(stmt)==SQLITE_ROW) { //取出sid(第0列) NSInteger sid= sqlite3_column_int(stmt, 0); //取出sname(第1列) NSString *sname=[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)]; //取出ssex(第2列) NSString *ssex=[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 2)]; //取出sage(第3列) NSString *sage=[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 3)]; NSLog(@"sid:%d,sname:%@,ssex:%@,sage:%@",sid,sname,ssex,sage); } //关闭伴随指针 sqlite3_finalize(stmt); NSLog(@"查询成功"); }else{ //结束伴随指针 sqlite3_finalize(stmt); NSLog(@"查询失败"); }}#pragma mark 按性别查找-(void)selectWithSex:(NSString *)sex{ //准备查找语句 NSString *selectString=@"select * from student where ssex = ?"; //伴随指针 sqlite3_stmt *stmt=nil; //预执行 int result=sqlite3_prepare(db, selectString.UTF8String, -1, &stmt, NULL); if (result==SQLITE_OK) { //绑定?的值 //1代表第一个?和参数绑定 sqlite3_bind_text(stmt, 1, sex.UTF8String, -1, NULL); while (sqlite3_step(stmt)==SQLITE_ROW) { NSInteger sid=sqlite3_column_int(stmt, 0); NSString *sname=[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)]; NSString *ssex=[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 2)]; NSString *sage=[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 3)]; NSLog(@"sid:%d,sname:%@,ssex%@,sage:%@",sid,sname,ssex,sage); } sqlite3_finalize(stmt); NSLog(@"查询成功"); }else{ //关闭伴随指针 sqlite3_finalize(stmt); NSLog(@"查询失败"); } }@end
控制器里边实现
- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib. //打开数据库 [[DataBaseHandle sharDB] openDB]; // NSLog(@"%@",NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)); //创建表 // [[DataBaseHandle sharDB]createTable]; //插入数据// Student *s1=[[Student alloc] init];// s1.name=@"王军1";// s1.sex=@"女";// s1.age=@"46";// [[DataBaseHandle sharDB] insertStuden:s1];// //修改数据 //[[DataBaseHandle sharDB] updateMessage]; //删除数据 // [[DataBaseHandle sharDB] deleteMessage]; //查找全部 // [[DataBaseHandle sharDB] selectAllStudent]; //查询按性别 [[DataBaseHandle sharDB] selectWithSex:@"女"]; //关闭数据库 [[DataBaseHandle sharDB] closeDB]; }
0 0
- SQLite---SQLite数据库简介
- Sqlite 数据库
- SQLite数据库
- SQlite 数据库
- SQLite数据库
- SQLite数据库
- SQLite数据库
- SQLite数据库
- SQLite数据库
- SQlite数据库
- sqlite数据库
- SQLite 数据库
- SQLite数据库
- SQLite数据库
- SQLite数据库
- SQLITE数据库
- SQLite数据库
- sqlite数据库
- 第十二周项目4-2,银行系统改善
- watershed分水岭算法的matlab例子详解
- 计算机求职总结--准备篇
- 图的基本概念及介绍
- 显示*** missing separator (did you mean TAB instead of 8 spaces?) 解决方案
- SQLite数据库
- HDU5095 Linearization of the kernel functions in SVM(模拟)
- javaScript简单实现ajax
- 理解hadoop的Map-Reduce数据流(data flow)
- Python3.4操作文件目录
- poj 1543 Perfect Cubes
- ubuntu14.04 安装 wordpress
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- iOS c 语言中两个参数的含义