IOS下SQLite的简单使用
本文转载至 http://www.cnblogs.com/cokecoffe/archive/2012/05/31/2537105.html
看着国外网站的教程,写了一个小例子,一个联系人的程序,包括 (姓名、地址、电话)三项内容,通过两个按钮,可以将信息保存或者查询数据库已有的信息。
UI就不说了,比较简单。贴一下关键代码,具体的话还是去看源代码(正想办法传,我这git出点问题)。

1 /*根据路径创建数据库并创建一个表contact(id nametext addresstext phonetext)*/
2
3 - (void)viewDidLoad
4 {
5 [super viewDidLoad];
6 // Do any additional setup after loading the view, typically from a nib.
7
8 NSString *docsDir;
9 NSArray *dirPaths;
10
11 // Get the documents directory
12 dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
13
14 docsDir = [dirPaths objectAtIndex:0];
15
16 // Build the path to the database file
17 databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"contacts.db"]];
18
19 NSFileManager *filemgr = [NSFileManager defaultManager];
20
21 if ([filemgr fileExistsAtPath:databasePath] == NO)
22 {
23 const char *dbpath = [databasePath UTF8String];
24 if (sqlite3_open(dbpath, &contactDB)==SQLITE_OK)
25 {
26 char *errMsg;
27 const char *sql_stmt = "CREATE TABLE IF NOT EXISTS CONTACTS(ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT,PHONE TEXT)";
28 if (sqlite3_exec(contactDB, sql_stmt, NULL, NULL, &errMsg)!=SQLITE_OK)
29 {
30 status.text = @"创建表失败\n";
31 }
32 }
33 else
34 {
35 status.text = @"创建/打开数据库失败";
36 }
37 }
38
39 }
40
41 /*将数据保存只数据库,当按下保存按钮的时候*/
42
43 - (IBAction)SaveToDataBase:(id)sender
44 {
45 sqlite3_stmt *statement;
46
47 const char *dbpath = [databasePath UTF8String];
48
49 if (sqlite3_open(dbpath, &contactDB)==SQLITE_OK) {
50 NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO CONTACTS (name,address,phone) VALUES(\"%@\",\"%@\",\"%@\")",name.text,address.text,phone.text];
51 const char *insert_stmt = [insertSQL UTF8String];
52 sqlite3_prepare_v2(contactDB, insert_stmt, -1, &statement, NULL);
53 if (sqlite3_step(statement)==SQLITE_DONE) {
54 status.text = @"已存储到数据库";
55 name.text = @"";
56 address.text = @"";
57 phone.text = @"";
58 }
59 else
60 {
61 status.text = @"保存失败";
62 }
63 sqlite3_finalize(statement);
64 sqlite3_close(contactDB);
65 }
66 }
67
68 /*根据输入的姓名来查询数据*/
69 - (IBAction)SearchFromDataBase:(id)sender
70 {
71 const char *dbpath = [databasePath UTF8String];
72 sqlite3_stmt *statement;
73
74 if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
75 {
76 NSString *querySQL = [NSString stringWithFormat:@"SELECT address,phone from contacts where name=\"%@\"",name.text];
77 const char *query_stmt = [querySQL UTF8String];
78 if (sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL) == SQLITE_OK)
79 {
80 if (sqlite3_step(statement) == SQLITE_ROW)
81 {
82 NSString *addressField = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 0)];
83 address.text = addressField;
84
85 NSString *phoneField = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 1 )];
86 phone.text = phoneField;
87
88 status.text = @"已查到结果";
89 [addressField release];
90 [phoneField release];
91 }
92 else {
93 status.text = @"未查到结果";
94 address.text = @"";
95 phone.text = @"";
96 }
97 sqlite3_finalize(statement);
98 }
99
100 sqlite3_close(contactDB);
101 }
102 }

IOS下SQLite的简单使用的更多相关文章
- Win7下SQLite的简单使用
前言 SQLite 是一个软件库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.SQLite 是在世界上最广泛部署的 SQL 数据库引擎.SQLite 源代码不受版权限制. 简 ...
- ios下最简单的正则,RegexKitLite
ios下最简单的正则,RegexKitLite 1.去RegexKitLite下载类库,解压出来会有一个例子包及2个文件,其实用到的就这2个文件,添加到工程中.备用地址:http://www.coco ...
- Visual Studio下SQLite数据库开发环境设置
由于我们介绍的内容都是基于微软的Visual Studio下开发的Win32平台,所以下边我们介绍Visual Studio下SQLite数据库开发环境设置.具体而言我们有两种方式可以在Visual ...
- opencv直线检测在c#、Android和ios下的实现方法
opencv直线检测在c#.Android和ios下的实现方法 本文为作者原创,未经允许,不得转载 :原文由作者发表在博客园:http://www.cnblogs.com/panxiaochun/p/ ...
- iframe在ios下无故扩大的问题探究
移动端页面内嵌了个 iframe,在 ios 下打开却发现页面怪异.比如 demo.代码如下: <!DOCTYPE html> <html lang="zh-CN" ...
- iOS下的 Fixed + Input 调用键盘的时候fixed无效问题解决方案
做touchweb开发的时候,做头疼的是,电脑上面时候好的,有些手机上面也是好的,个别手机和浏览器出现问题,对于这些,只能慢慢调试,找问题. 今天说一下比较老的IOS的问题,那就是"iOS下 ...
- iOS开发UI篇—简单介绍静态单元格的使用
iOS开发UI篇—简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...
- iOS下使用SHA1WithRSA算法加签源码
首先了解一下几个相关概念,以方便后面遇到的问题的解决: RSA算法:1977年由Ron Rivest.Adi Shamirh和LenAdleman发明的,RSA就是取自他们三个人的名字.算法基于一个数 ...
- 解决ios下的微信打开的页面背景音乐无法自动播放
后面的项目发现,还有两个坑,需要注意下: ·本文的解决方案的核心是利用了 微信/易信 在ready的时候会有个 WeixinJSBridgeReady/YixinJSBridgeReady事件,通过监 ...
随机推荐
- element-ui 的input组件 @keyup.enter事件的添加办法
<el-input placeholder="请输入密码" type="password" @keyup.enter.native="login ...
- Problem 2111 Min Number
...
- jquery 日期插件
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- vue2.0组件入门
如何定义一个组件 在根目录src/components/文件夹下新建组件的文件夹Footer.vue组件 在Footer.vue中 <template> <div class=&qu ...
- netsh配置Windows防火墙(advfirewall)
有人可能会说,Windows防火墙有非常友好的用户界面,为什么要使用命令行界面来配置一个Windows防火墙?有 个人认为有一下原因(撇开有的人喜欢命令行不喜欢界面的 , o(∩_∩)o 哈哈) Fi ...
- PHP使用JpGraph绘制折线图
PHP使用JpGraph绘制折线图 下载jpgraph类库,使用的是src目录下的类文件. require_once './src/jpgraph.php'; require_once './src/ ...
- Linux 之 Xunsearch(2)
Linux 之 Xunsearch(2) 参考教程:[千峰教育] Xunsearch的项目配置文件: 基本说明: (1)项目配置是一个项目的核心灵魂,非常重要,通常保存为.ini文件, 通常存储在/u ...
- OpenOPC
客户端连接OpenOPC Gateway import OpenOPC gateway='192.168.1.90' opchost='testbox' opcserv='KEPware.KEPSer ...
- String,StringBuffer,StringBuilder源码分析
1.类结构 String Diagrams StringBuffer Diagrams StringBuilder Diagrams 通过以上Diagrams可以看出,String,StringBuf ...
- 关于 Bellman-Ford 与 Floyd 算法的一点感想
在四种常用的最短路算法 Dijkstra, SPFA, floyd, Bellman-Ford 中, Dijks 和 SPFA 的使用较为普遍, 对大多数人来说, 也较为熟悉. 然而, floyd 与 ...