SQLite基本操作-----IOS(如有雷同,纯属巧合)
一、常用方法
sqlite3 *db, 数据库句柄,跟文件句柄FILE很类似
sqlite3_stmt *stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句
sqlite3_open(), 打开数据库,没有数据库时创建。
sqlite3_exec(), 执行非查询的sql语句
Sqlite3_step(), 在调用sqlite3_prepare后,使用这个函数在记录集中移动。
Sqlite3_close(), 关闭数据库文件
还有一系列的函数,用于从记录集字段中获取数据,如
sqlite3_column_text(), 取text类型的数据。
sqlite3_column_blob(),取blob类型的数据
sqlite3_column_int(), 取int类型的数据
二、创建表
创建表的时候需要预处理和执行创建两个过程
执行创建的时多选择sqlite3_step
三、相关代码
1、打开或者创建数据库
sqlite3 *sqlDataBase; -(BOOL)createOrOpen:(NSString *)dbName { //获取用户域覆径信息 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:]; /** *Users/admin/Library/Application Support/iPhone Simulator/7.1/Applications/8E23557E-AAA6-471A-AAFE-E036BF1B7E4C/Library/Documentation *判断用户域是否有数据库dbNmae */ NSString *path = [documentsDirectory stringByAppendingPathComponent:dbName]; NSFileManager *fileManageer = [NSFileManager defaultManager]; //如果用户域内有该数据库,则返回yes,否则返回NO BOOL find = [fileManageer fileExistsAtPath:path]; if(find) //对找到进行处理,如果找到了,并且打开了,则返回yes { //打开该数据库,如果打开失败,则返回NO,否则返回yes if(sqlite3_open([path UTF8String], &sqlDataBase)!= SQLITE_OK) { //关闭sqlDataBase,实际是释放了它 sqlite3_close(sqlDataBase); return NO; } return YES; } NSLog(@"%d",sqlite3_open([path UTF8String], &sqlDataBase)); //创建数据库,创建返回yes,并且打开数据库,否则返回NO if(sqlite3_open([path UTF8String], &sqlDataBase)==SQLITE_OK) { return YES; }else { //关闭sqlDataBase,实际是释放了它 sqlite3_close(sqlDataBase); return NO; } return NO; }
2、插入数据
//向表中插入数据 -(void)insertMBkey:(NSString *)key { BOOL isOK = NO; sqlite3_stmt *statement; static char *sql = "INSERT INTO user VALUES ('1', 'Bill', '河南', 'ssss','2')"; int success = sqlite3_prepare_v2(sqlDataBase, sql, -, &statement, NULL); if(success !=SQLITE_OK) { isOK = NO; }else { sqlite3_bind_text(statement, , [key UTF8String], -, SQLITE_TRANSIENT); success = sqlite3_step(statement); sqlite3_finalize(statement); } if(success ==SQLITE_ERROR) { isOK = NO; }else { isOK=YES; } return; }
3、查询数据
//查询数据 -(void)GetList:(NSMutableArray *)KeysList { BOOL isOK = NO; sqlite3_stmt *statement; static char *sql = "select id,address from user"; int success = sqlite3_prepare_v2(sqlDataBase, sql, -, &statement, NULL); if(success !=SQLITE_OK) { isOK = NO; }else { //查询结果集中一条一条地遍历所有记录,这里的数字对应的时列值 while (sqlite3_step(statement)==SQLITE_ROW) { int kid = sqlite3_column_int(statement, ); char *key = (char *)sqlite3_column_text(statement, ); UserInfo *userModel = [[UserInfo alloc] init]; userModel.userId =kid; if (key) { userModel.userAddress = [NSString stringWithUTF8String:key]; } [KeysList addObject:userModel]; sqlite3_finalize(statement); } NSLog(@"%@",KeysList); if(success==SQLITE_ERROR) { isOK = NO; }else { isOK = YES; } return; } }
SQLite基本操作-----IOS(如有雷同,纯属巧合)的更多相关文章
- XCode 4.3 Unable to load persistent store UserDictionary.sqlite 以及 ios simulator failed to install the application
I have been working on an iOS app for some time, all of a sudden I am getting the following crash ev ...
- 练习一:SQLite基本操作
一.基础知识: 运用场景: 1>应用运行需要保存一系列有一定关系有一定结构的数据(文本也可以但是存储效率低) 2>文件类型:.db(一个数据库就是一个.db文件) 3>路径:/dat ...
- Android 的 Sqlite基本操作
在 SQL 数据库中保存数据 使用数据库 将数据保存到数据库对于重复或结构化数据(比如契约信息)而言是理想之选. 本课程假定您基本熟悉 SQL 数据库并且可帮助您开始在 Android 中使用 SQL ...
- sqlite基本操作
sqlite准备步骤; .下载:https://www.sqlite.org/download.html: sqlite-dll-win64-3250200.zip 和 sqlite-tools-wi ...
- 【转】C# 对sqlite基本操作,带批量插入
原文地址:https://download.csdn.net/download/mic_gary/10154869 public class SQLiteHelper { //数据库连接字符串 pub ...
- Android的SQLite基本操作
涉及SQLite的增删改查,结果用log显示 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
- iOS开发之Masonry框架源码深度解析
Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁.Masonry简化了NSLayoutConstraint的使用方式,让 ...
- iOS开发之Masonry框架源码解析
Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁.Masonry简化了NSLayoutConstraint的使用方式,让 ...
- IOS OC 计算器算法(不考虑优先级)
个人见解:为还在计算器算法方面迷惑的同学一个数据处理解决方案:定义一个可变数组array,一个可变字符串str,使字符通过[array addObject:str];方法添加到可变数组,每当触发运算符 ...
随机推荐
- Unity3d中PureMVC框架的搭建及使用资料
1.下载PureMVC框架 https://github.com/PureMVC/puremvc-csharp-multicore-framework https://github.com/PureM ...
- Dockerfile指令详解
Dockerfile中包括FROM.MAINTAINER.RUN.CMD.EXPOSE.ENV.ADD.COPY.ENTRYPOINT.VOLUME.USER.WORKDIR.ONBUILD等13个指 ...
- hiveServer2 和 metastore的一点解读。
刚看了hive官网的文档,对于一些概念结合自己的经验,似乎又多了一些理解,想一想还是记下来的好,一来我是个有些健忘的人,过一段时间即便忘了,循着这个帖子,也能快速把知识点抓起来:二来或许对别人也有些启 ...
- mybatis教程4(动态SQL)
动态SQL语句 MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦.例如拼接时要确保不能忘记添加必要的空 ...
- Linux NFS存储服务部署
什么是NFS 中文意思是网络文件系统,主要功能是通过网络(一般是局域网)让不同主机之间可以共享文件或目录 NFS属于本地文件存储服务 缺点1: 1 2 3 4 5 6 7 windows上无法使用 ...
- VB.NET网络是否联通Function
''' <summary> ''' IP Ping ''' </summary> ''' <param name="strIpOrDName& ...
- Java并发编程:synchronized、Lock、ReentrantLock以及ReadWriteLock的那些事儿
目录 前言 synchronized用法 修饰方法 修饰实例方法 修饰静态方法 同步代码块 引出Lock Lock用法 子类:ReentrantLock 读写分离锁:ReadWriteLock Loc ...
- Git实战手册(二): 标签应用和版本管理
教程所示图片使用的是 github 仓库图片,墙内朋友请移步原文地址 有空就来看看个人技术小站, 我一直都在 0. 背景介绍 当一个代码仓库进过长时间的迭代,针对不同的时期和需求,必定会有不同的版本. ...
- 迭代器模式(Iterator)
1.概念 迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示,属于行为模式的一种 2.模式结构 抽象迭代器(Iterator):此抽象角色定义出遍历元素所需的接口 具体 ...
- css3火焰文字样式代码
css样式: <style type="text/css"> body{background:#000;} *{margin:0;padding:0;transitio ...