ios连接sql数据库
来源:互联网 发布:姗姗手账小铺 淘宝 编辑:程序博客网 时间:2024/05/21 00:45
一个sql数据文件, 下载一个火狐浏览器。 中的一个sqlit manger 应用。
通过新建一个New database, 创建一个table
在到
倒入数据库, 生成一个.sqlite文件(之前有个让user选择存储的位置中)
把文件倒入到自己的项目中去,
建立sqllite的连接,添加 框架, 新建一个用来连接的类,
#import <Foundation/Foundation.h>
#import <sqlite3.h>
@interface connection : NSObject
+(sqlite3 *) createDB;
@end
@implementation connection
static sqlite3 *instanc=nil;
+(sqlite3 *) createDB{
if (instanc!=nil) {
return instanc;
}
//打开SQL文件路径
//先指出数据库文件的源路径
NSString *sourcePath=[[NSBundle mainBundle]pathForResource:@"ol_pinyins" ofType:@"sqlite"];
//再把数据库文件的目标路径指向document
NSString *docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES)objectAtIndex:0];
//目标路径,stringByAppendingPathComponent附加路径组件字符串,就是数据库名称。
NSString *targetPath=[docPath stringByAppendingPathComponent:@"ol_pinyins.sqlite"];
NSLog(@"targetPath=%@",targetPath);
//单例对象文件管理器创建
NSFileManager *fm=[NSFileManager defaultManager];
NSError *error=nil;
//判断目录下文件是否存在,当不存在的时候就进行拷贝,否则返回instanc
if (![fm fileExistsAtPath:targetPath]) {
[fm copyItemAtPath:sourcePath toPath:targetPath error:&error];
}else{
return instanc;
}
}
//UTF8String将OC类型的指针转换成C类型的指针
sqlite3_open([targetPath UTF8String], &instanc);//打开数据库存入instanc数据库中
NSLog(@"instance=%p",instanc);
return instanc;
}
@end
#import <Foundation/Foundation.h>
@interface pinyin : NSObject
//创建映射列表
@property (assign,nonatomic)intid;
@property (retain,nonatomic) NSString *pinyin;
+(NSMutableArray *) findbypinyin:(NSString *)pinYin;
@end
#import "pinyin.h"
#import "connection.h"
@implementation pinyin
@synthesize id,pinyin;
//根据拼音查询,查询id>26的字母
+(NSMutableArray *) findbypinyin:(NSString *)pinYin{
NSLog(@"%@",pinYin);
NSMutableArray * pinyinArray=nil;//返回查询结果
sqlite3 *sql3=[connection createDB];//获取数据连接
//声明sql语句对象
sqlite3_stmt *st;
NSString *sqlStr=[NSString stringWithFormat:@"select * from ol_pinyins where substr(pinyin,1,1)='%@'and id>26 order by pinyin",pinYin];// id前26个是单纯的a-z字母,我们不需要这几个字母
int p=sqlite3_prepare_v2(sql3,[sqlStr UTF8String], -1, &st,nil);//开辟sql3连接,st对象
if (p==SQLITE_OK) {//判断sql语法正确性
pinyinArray=[[[NSMutableArray alloc]init]autorelease];//如果正确则开辟空间
sqlite3_bind_text(st,1, [pinYin UTF8String], -1,nil);//绑定问号语句
while (sqlite3_step(st)==SQLITE_ROW) {//SQLITE_ROW宏定义表示是否查询到了记录,如果查询到了才可以操作这条记录
pinyin *detail=[[[pinyin alloc]init]autorelease];
detail.id=sqlite3_column_int(st,0);//获取的是sqlite里的数据 ,里面又一个id字段,一个拼音字段 获取st表格中的第0个字段
//把C语言类型的指针转换成OC类型的指针,并进行UIF8码转码
detail.pinyin=[NSString stringWithCString:(char *) sqlite3_column_text(st,1) encoding:NSUTF8StringEncoding];
[pinyinArray addObject:detail];
}
}
sqlite3_finalize(st);//关闭语句对象
return pinyinArray;
}
现在就可以类的方法进行读取出sqlite中数据了
- ios连接sql数据库
- 连接SQL Server数据库
- c#连接sql数据库
- 无法连接SQL数据库
- c#连接sql数据库:
- SQL Server2005连接数据库
- vc++ 连接SQL数据库
- Java连接SQL 数据库
- OLEDB连接SQL数据库
- java连接SQL数据库
- C#连接SQL数据库
- Java连接SQL数据库
- C# 连接SQL数据库
- 连接SQL数据库
- sql 远程数据库 连接
- SQL连接远程数据库
- 连接SQL Server2005数据库
- ArcEngine连接数据库SQL
- POJ 1204 Trie树
- poj 3662 Telephone Linse 二分答案 +dijkstra
- MobileSubstrate介绍
- java MemCachedClient遍历memcache中所有的key
- 《TCP-IP详解 卷1:协议》学习笔记(三)
- ios连接sql数据库
- 算法面试题集锦
- Android APK反编译详解(附图)
- poj 3661 Running
- sqlite3 表里插入系统时间(时间戳)
- Linux用户及权限基础 3---- Linux扩展权限
- Android常用控件之SeekBar的使用
- 创建线程的3种方式
- STL 容器简介:C++ 容器:顺序性容器、关联式容器和容器适配器