IOS下sqlike数据库的使用

数据库的操作

—————————————————————————sqlite常用数据类型
INTEGER 整形
TEXT 文本型(字符串)
REAL 实数(浮点型数据)
BLOB 较大的二进制数据

—————————————————————————sql创建:

CREATE 创建;
TABLE 表;
PRIMARY KEY 主键,唯一标识符
AUTOINCREMENT 自动增长
NOT NULL 非空
UNIQUE 唯一
if not exists 如果不存在
原型:CREATE TABLE 表名称(字段1 字段类型 是否主键 是否唯一 是否可空 是否自动增加, 字段2 , 字段类型..);
例句:CREATE TABLE name3(nameID INTEGER PRIMARY KEY UNIQUE , names TEXT) ps:不知道是不是工具的问题AUTOINCREMENT这条语句加进去总是报错 而且代码的顺序不可以写错 —————————————————————————删除表 DROP 丢弃 DROP TABLE name —————————————————————————添加列 ALTER 改变 修改 ALTER TABLE name ADD nameID INTEGER —————————————————————————插入数据 INSERT 插入 INTO 到..里面 INSERT INTO name VALUES (1,’ zhang ’,1)//插入数据到name表中,不能单独插入. INSERT INTO name(nameID,sex)VALUES(‘zhang’,0)//同上 只是方式不同 每一列都必须写 —————————————————————————查询数据 SELECT 查询 * 全部 FROM 来源 WHERE 哪里 LIMIT 限制 SELECT * FROM name // 查询name中所有数据 SELECT * FROM name WHERE nameID <10 //查询name表中nameID列的所有小于10的数据 SELECT * FROM name WHERE nameID <10 OR sex = 1 //查询表中nameID小于10或sex 等于1的数据 SELECT * FROM name WHERE nameID <10 AND number >5 //查询表中所有ID小于10number大于5的数据 SELECT nameID from name1//查询name里所有nameID列的数据 SELECT * FROM Students LIMIT 5,15 //从第六条开始 往后的15SELECT DISTINCT names from name1 //查询name1表中names列中所有不重复的数据 —————————————————————————匹配数据 LIKE 像 匹配 SELECT * from name1 where names like ‘a%’//匹配字符串前面是”a”的字符串 SELECT * from name1 where names like ‘_a%’//匹配字符串第二位开始为”a”的字符串 SELECT * from name1 where names like ‘%a%’//匹配包含’a’的字符串 SELECT * from name1 where names like ‘%a’//匹配以’a’结束的字符串 —————————————————————————修改数据 UPDATE 更新 SET 设置 UPDATE name1 SET names = '123' WHERE nameID > 2 AND nameID < 10 //修改name1表中nameID属性大于2小于10names列的数据 —————————————————————————删除数据 DELETE 删除 DELETE FROM name1 WHERE nameID > 2 //删除name1中所有nameID大于2的数据 —————————————————————————数据排序 ORDER BY 整理 SELECT * FROM name1 ORDER BY nameID DESC //对name1表中的nameID列进行降序排列显示 —————————————————————————联合查询 select name1.names,people.name from name1,people WhERE name1.nameID= people.nameID //查询name1表盒people表中nameID 相同的name数据 —————————————————————————函数和运算符 MAX 最大值 MIN 最小值 AVG 平均值 SUM 求和 = 等于 <> 不等于 > 大于 < 小于 >=大于等于 <= 小于等于 betwee 两个数之间(某个范围内) 

IOS中的使用

—————————————————————————创建
想再IOS中使用sqlike数据库 需要在Xcode中导入库文件
新建一个Xcode—>点击左侧栏最上面的蓝色文件标识 打开设置—>选择build phases  —> 展开link binary With Libraries—>点击 + 号弹出添加库文件目录,在搜索框输入 sql 出现两个dylib类型的文件 选择其中一个文件 点击ADD 添加成功

sqlite3 *dataBase;//创建一个sqlite3的对象
const char *dataBasePath = [dbPath UTF8String]//将路径文本转化为C类型的字符串
sqlite3_open(dataBasePath, &dataBase) == SQLITE_OK //打开一个数据库文件不存在则创建 成功返回0
sqlite3_close(dataBase);//关闭数据库数据库使用完毕 一定要关闭数据库
NSString *sqlStr = @"CREATE TABLE student (studentID INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,age INTEGER)";//创建一个sql创建表的语句字符串
char *error;//创建一个C类型字符串用于接收错误信息
sqlite3_exec(dataBase, [sqlStr UTF8String], NULL, NULL, &error) ==SQLITE_OK//执行sql的创建语句 第一参数为数据库对象 第二参数为char类型的sql语句字符串 第三个参数为C语言的回调函数 第四个参数为回调函数的第一个参数 第五个参数为执行失败后返回的错误信息
增加删除和更改的使用方法和创建表相同

—————————————————————————查询数据
NSString*sqlStr = @"select * from student";//创建一个查询语句
sqlite3_stmt *stmt = nil;//创建缓冲区
sqlite3_prepare_v2(dataBase, [sqlStr UTF8String],-1, &stmt, nil) == SQLITE_OK//按照sqlstr的文本代码规则取出数据 绑定缓冲区,第一个参数为数据库对象 第二个参数为代码文本,第三个参数表示C语言代码的长度 第四个参数为缓冲区对象 第四个参数为错误信息 成功返回0
while (sqlite3_step(stmt)==SQLITE_ROW)//在循环查询的时候判断是否还有下一行 sqlite3_step(stmt)这段代码每执行一次 取出数据的下标+1 如果当前下标存在数据 则返回100 否则返回101
int studentID = sqlite3_column_int(stmt, 0);//取出第一列的数据 第一列的数据类型为INTEGER 所以使用int接收
char *name = (char *) sqlite3_column_text(stmt, 1);//取出第二列的文本数据 返回值为char类型文本 所以使用char接受

—————————————————————————插入数据的第二种方法
NSString *sqlStr = @"insert into contactTable (name,phoneNumber) values (?,?)";//插入数据的时候使用问号作为要插入值的占位符
sqlite3_stmt * stmt = nil;//创建缓冲区
sqlite3_prepare_v2(database, [sqlStr UTF8String], -1, &stmt, nil) == SQLITE_OK//banding缓冲区 成功返回0
sqlite3_bind_text(stmt, 1, [contant.name UTF8String], -1, NULL);//绑定要插入的数据第一个参数缓冲区 第二个参数对应问号的索引从1开始 第三个参数就是绑定的值 第四个就是计算长度 第五个回调函数
sqlite3_step(stmt) == SQLITE_DONE//如果成功返回101

你可能感兴趣的:(ios,数据库,sqlite3)