博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sqlite(数据库)
阅读量:5307 次
发布时间:2019-06-14

本文共 5407 字,大约阅读时间需要 18 分钟。

       1.Sqlite数据类型:NULL. 空值、INTEGER. 整型、REAL.浮点型、TEXT.文本类型、BLOB. 二进制类型,用来存储文件,比如图片

      2.使用sqlite3需要先导入libsqlite3.dylib并导入主头文件

      3. 设置数据库文件存放路径,如沙盒的Doucuments文件夹内

      NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

      _dbPath = [path stringByAppendingPathComponent:@"person.sqlite"];

      4.打开数据库文件:
      sqlite3_open([_dbPath UTF8String], &_db);//第一个参数代表数据库文件的路径,第二个是sqlite对象,注意,此方法返回值为0时,代表打开成功
      5.创建数据库表
       const char *createSQL = "CREATE TABLE IF NOT EXISTS PEOPLE (ID INTEGER PRIMARY KEY AUTOINCREMENT, name Text, pwd TEXT)";//创建表的sql语句
sqlite3_exec(_db, createSQL, NULL, NULL, NULL);//执行建表语句
      6.插入数据
NSString *sql = [NSString stringWithFormat:@"INSERT OR REPLACE INTO PEOPLE (name,pwd) VALUES('aa','bb')"];//sql语句
sqlite3_exec(_db, [sql UTF8String], NULL, NULL, NULL);//执行操作,注意,sqlite是基于c语音的,所以sql语句需要是C语言中的字符串,如果不是,则需要自己转换
      7.删除操作:
NSString *sql = [NSString stringWithFormat:@"delete from PEOPLE where id=%d",1];//sql语句
sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);
     8.更新数据:
NSString *sql = [NSString stringWithFormat:@"update PEOPLE set name = '%@' where id=2",@"小黄"];//sql语句
sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);//执行sql语句
    9.查询数据库
NSString *sql = @"SELECT * FROM PEOPLE";//sql语句
sqlite3_prepare_v2检查sql的合法性
sqlite3_step逐行获取查询结果
sqlite3_coloum_xxx获取对应类型的内容
sqlite3_stmt *stmt = NULL;//用于保存编译好的sql语句
//判断查询语句是否合法
if (SQLITE_OK == sqlite3_prepare_v2(_db, [sql UTF8String], -1, &stmt, NULL)) {
while (SQLITE_ROW == sqlite3_step(stmt)) {
//获取数据,第一个参数为执行语句,第二个参数代表每一行的第几列
const unsigned char *name = sqlite3_column_text(stmt, 1);
//转换成OC字符串
NSString *str = [NSString stringWithUTF8String:(const char *)name];
}
}
     10.sqlite3_close(_db);//关闭数据库

 

下面是一个小小的例子:(借用火狐浏览器)

1.点击头文件。如图-1所示:

 

 

 

 

图-1

2.找到Linked Framewks and Libraries,点击"+"号,出现如图-3所示:

 

 

 

 

 

 

图-2

 

3.出现图-3,在search中查找sqlite.3

 

图-3

 

#import "ViewController.h"#import  
//导入数据库的头文件@interface ViewController (){ sqlite3 *_db;}@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; //一般会把数据库文件放入沙盒,所以需要先设定存放路径 NSString *_dbpath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/MySql.sqlite"]; //sqlite3_open方法,打开数据库文件,第一个参数代表数据库文件的路径,注意需要调用UTF8String方法将NSString转换成C的字符串格式,第二个参数代表数据库对象,该方法如果返回0(SQLITE_OK),代表数据库打开成功,如果该路径没有数据库文件,则先创建再打开,否则直接打开 int a = sqlite3_open([_dbpath UTF8String], &_db); NSLog(@"%d",a); //创建数据库表 //数据库表创建语句:create table if not exist(如果表不存在) Student(表名,自己定义)(该括号要保存的信息:字段名 字段格式 ,多个字段之间用逗号隔开) NSString *s=@"create table if not exists Student(name TEXT,age INTEGER)";//如果数据库中没有Student表,则创建该表,包含字符串形式的name和整形的age //执行数据库语句:第一个参数代表执行的数据库对象,也就是打开的数据库,第二个参数代表执行语句,后面三个直接给NULL即可 sqlite3_exec(_db,[s UTF8String], NULL, NULL, NULL); //数据库增加数据 //sql插入语句:insert into Student(表名) (要进行保存的字段名,名字之间用逗号隔开) values(要保存的实际数据,多个数据用逗号隔开,注意:此处数据要与前面的字段名保持一致,且如果是TEXT类型,需要用单引号引起来) NSString *insertSql=@"insert into Student(name,age) values('江帅',21)"; //执行插入语句 sqlite3_exec(_db,[insertSql UTF8String], NULL, NULL, NULL); NSString *insertSql1=@"insert into Student(name,age) values('刘春雷',22)"; //执行插入语句 sqlite3_exec(_db,[insertSql1 UTF8String], NULL, NULL, NULL); NSString *insertSql2=@"insert into Student(name,age) values('丁云翔',25) "; //执行插入语句 sqlite3_exec(_db,[insertSql2 UTF8String], NULL, NULL, NULL); //删除操作 //sql删除语句:delete(关键字) from Student(表名)where(条件关键字)name(字段名)=''(要删除数据的条件,如果是TEXT,用单引号引起来) NSString *deSql=@"delete from Student where name= '丁云翔'"; sqlite3_exec(_db, [deSql UTF8String], NULL, NULL, NULL); //全部删除 // NSString *delAll=@"delete from Student"; //sqlite3_exec(_db, [delAll UTF8String], NULL, NULL, NULL); //该(更新) //sql更新语句:update(关键字)Student(表名)set(关键字 赋值)age(字段名)=25(要更改的值,如果要更改多个字段,则用逗号隔开)where(条件关键字)rowid(字段名)= 6(条件) NSString *updateSql=@"update Student set age = 25,name = '刘春雷' where rowid = 6"; sqlite3_exec(_db, [updateSql UTF8String], NULL, NULL, NULL); //查询 //查询语句 //查询所有:select(关键字)*from Student(表名) NSString *querySql=@"select * from Student"; sqlite3_stmt *_stmt=nil;//用于存放查询结果 int res1=sqlite3_prepare(_db, [querySql UTF8String], -1, &_stmt, NULL);//检查sql语句的合法性,如果合法则直接运行,返回结果为0 if (res1==0) { //便利结果集_stmt如果sqlite3_step返回100,代表有查询结果,先取出第一条,然后再指向下一条,直到sqlite3_step返回101,代表遍历结束 while (SQLITE_ROW ==sqlite3_step(_stmt)) { //取出单行结果中的某一列,从0开始 const unsigned char *s = sqlite3_column_text(_stmt, 0); //将查询结果转换成oc字符串 NSString *name = [NSString stringWithUTF8String:(const char *)s]; NSLog(@"结果:%@",name); } } //查询符合条件的结果 NSString *querySql1 = @"select * from Student where age < 23"; sqlite3_stmt *_stmt1 = nil;//用于存放查询结果 int res2 = sqlite3_prepare(_db, [querySql1 UTF8String], -1, &_stmt1, NULL);//检查sql语句的合法性,如果合法则直接运行,返回结果为0 if (res2 == 0) { //遍历结果集_stmt,如果sqlite3_step返回100,代表有查询结果,先取出第一条,然后再指向下一条,直到sqlite3_step返回101,代表遍历结束 while (SQLITE_ROW == sqlite3_step(_stmt1)) { //取出单行结果中的某一列,从0开始 const unsigned char *s = sqlite3_column_text(_stmt1, 0); //将查询结果转换成oc字符串 NSString *name = [NSString stringWithUTF8String:(const char *)s]; NSLog(@"--结果:%@",name); } } sqlite3_close(_db);//关闭数据库 NSLog(@"%@",_dbpath); }

 

转载于:https://www.cnblogs.com/wyhwyh2114/p/5005596.html

你可能感兴趣的文章
论三星输入法的好坏
查看>>
Linux 终端连接工具 XShell v6.0.01 企业便携版
查看>>
JS写一个简单日历
查看>>
LCA的两种求法
查看>>
Python 发 邮件
查看>>
mysql忘记密码的解决办法
查看>>
全面分析Java的垃圾回收机制2
查看>>
[Code Festival 2017 qual A] C: Palindromic Matrix
查看>>
修改博客园css样式
查看>>
Python3 高阶函数
查看>>
初始面向对象
查看>>
docker一键安装
查看>>
leetcode Letter Combinations of a Phone Number
查看>>
Unity 5.4 测试版本新特性---因吹丝停
查看>>
7.5 文件操作
查看>>
DFS-hdu-2821-Pusher
查看>>
MyEclipse中将普通Java项目convert(转化)为Maven项目
查看>>
node js 安装.node-gyp/8.9.4 权限 无法访问
查看>>
windows基本命令
查看>>
VMware中CentOS设置静态IP
查看>>