本文实例为大家分享了ios中sqlite的具体操作方法,供大家参考,具体内容如下
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
#import <sqlite3.h>
@interface ViewController ()
{
sqlite3 *_sqldb;
}
@end
@implementation ViewController
- ( void )viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self OpenDb];
[self createTable];
[self insertData];
[self FindData];
}
//打开数据库
-( void )OpenDb{
NSArray *arrs= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//创建数据库,如果数据库存在就直接打开,不存在就创建打开
NSString *path=[arrs lastObject] ;
NSString *documentpath= [path stringByAppendingPathComponent:@ "sql.db" ];
int reslut= sqlite3_open([documentpath UTF8String], &_sqldb);
if (reslut==SQLITE_OK){
NSLog(@ "数据库已被打开" );
}
}
//通过数据库实例创建表
-( void )createTable{
//不带参数的sql语句
const char * sql= "create table if not exists t_person (id integer primary key autoincrement,name text,age integer);" ;
char *error;
//sqlite3_exec可以执行一切不带参数的SQL语句。如果是带参数最好不用,防止SQL注入漏洞攻击
int resutl= sqlite3_exec(_sqldb, sql, NULL, NULL, &error);
if (resutl==SQLITE_OK){
NSLog(@ "创建表成功" );
}
else {
NSLog(@ "创建表失败--》%s" ,error);
}
}
//插入数据
-( void )insertData{
//带参数的SQL语句 "?"是带参数的占位符
const char * sql= "insert into t_person(name,age) values(?,?);" ;
sqlite3_stmt *stmp;
//在执行SQL语句之前检查SQL语句语法,-1代表字符串的长度
int result= sqlite3_prepare_v2(_sqldb, sql, -1, &stmp, NULL);
if (result==SQLITE_OK){
NSLog(@ "插入SQL语句语法没有问题" );
//绑定参数,插入的参数的下标是从1开始
sqlite3_bind_text(stmp, 1, "gcb" , -1, NULL);
sqlite3_bind_int(stmp, 2, 12);
//执行参参数的SQL语句,不能有exec
int result=sqlite3_step(stmp);
//插入进行判断,要用sqLite_Done来判断
if (result==SQLITE_DONE){
NSLog(@ "插入成功" );
}
else {
NSLog(@ "插入失败" ) ;
}
}
else {
NSLog(@ "插入SQL语句有问题" );
}
}
-( void )FindData{
char *sql= "select id,name,age from t_person" ;
//查询做好用step执行
sqlite3_stmt *stmt;
//检查SQL语句的语法问题
int result= sqlite3_prepare_v2(_sqldb, sql, -1, &stmt, NULL);
if (result==SQLITE_OK){
while (sqlite3_step(stmt)==SQLITE_ROW) {
//查询的列是0开始 插入的列从1开始
// int xh=sqlite3_column_int(stmt, 0);
int xh=sqlite3_column_int(stmt, 0);
char * name=( char *)sqlite3_column_text(stmt, 1);
int age=sqlite3_column_int(stmt, 2);
NSLog(@ "xh=%i-->name=%s-->age=%i" ,xh,name,age);
}
}
else {
NSLog(@ "查询SQL语法有误" );
}
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助。