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];方法添加到可变数组,每当触发运算符 ...
随机推荐
- C++模板的应用
需求:类比数组类,只不过数组类型不再是整型.浮点型等,也可以是类. 1.创建模板类 头文件 #ifndef MYVECTOR_H #define MYVECTOR_H #include <ios ...
- 一直性hash解决扩容后的hash算法不用变
转自: http://blog.codinglabs.org/articles/consistent-hashing.html 摘要 本文将会从实际应用场景出发,介绍一致性哈希算法(Consisten ...
- jquery根据name属性查找元素
$("div[id]") //选择所有含有id属性的div元素 $("input[name='newsletter']") //选择所有的name属性等于'ne ...
- 浅析JavaScript正则表达式
1.正则表达式的定义 正则表达式是一个描述字符模式的对象.JavaScript的RegExp类表示正则表达式,String和RegExp都定义了方法,后者使用正则表达式进行强大的模式匹配和文本检索与替 ...
- [转]angular2之@Output() EventEmitter
本文转自:https://www.jianshu.com/p/f2768f927c86 A src/app/components/contains/contain1.ts import { Compo ...
- WPF 使用RPC调用其他进程
如果在 WPF 需要用多进程通信,一个推荐的方法是 WCF ,因为 WCF 是 RPC 计算.先来讲下 RPC (Remote Procedure Call) 远程过程调用,他是通过特定协议,包括 t ...
- c#实战开发:以太坊钱包对接私链 (二)
上一篇讲了 以太坊私链搭建 首先下载Ethereum Wallet 钱包 可以直接百度 下载如果直接打开它会默认连接公链 所以我们要通过命令打开 "F:\Program Files\Ethe ...
- WebForm 【Repeater】展示数据
在 Webform 数据展示中 界面层 : HTLM 业务逻辑层 :只能用 C# Repeater 重复器 能够用来循环展示数据 具有5种模板 HeaderTemplat ...
- 数据库和ado连接语句的使用总结
基本的sql语句 创建数据库:CREATE DATABASE database-name 删除数据库:drop database dbname 创建表:create table tabname(字段属 ...
- [PHP] 算法-请找出带环链表的环的入口结点的PHP实现
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null 1.找链表倒数第k个结点,输入一个链表,输出该链表中倒数第k个结点.第一个指针走(k-1)步,到达第k个节点,两个指针同时往后 ...