% cd ~/Documents/code//命令行cd到你要下载的目录 % curl -o openssl-1.0.0e.tar.gz http://www.openssl.org/source/openssl-1.0.0e.tar.gz//下载 % tar xzf openssl-1.0.0e.tar.gz //解压缩
% cd ~/Documents/code/SQLCipherApp % git clone https://github.com/sqlcipher/sqlcipher.git
% cd ~/Documents/code/SQLCipherApp % git clone https://github.com/sqlcipher/openssl-xcode.git
-(BOOL) openDatabase
{
if (sqlite3_open([[self dataFilePath:DB_NAME] UTF8String], &_database) == SQLITE_OK) {
const char* key = [@",66c9a^N" UTF8String]; //数据库文件加密
sqlite3_key(_database, key, (int)strlen(key)); //数据库文件加密
NSLog(@"\n===数据库打开or创建成功===\n");
return YES;
}else{
NSLog(@"\n===数据库打开失败===\n");
}
return NO;
}
DB_NAME 是定义的 数据库文件名的宏",66c9a^N" 是你要设置的数据库密钥 sqlite3_key(_database, key, (int)strlen(key));这个方法里就包含了 加解密的过程!~是不是非常简单呢嘿嘿接下来 附上自己的工程 源代码有需要的童鞋,就自己看看吧!里面有详细的注释, 也简单的实现了几个方便数据库操作的函数
//////////////////////////////////////////////////////////
#import <Foundation/Foundation.h>
#import <sqlite3.h>
#define DB_NAME @"xxxxxxx.db" //数据库文件名
@interface SqliteHelp :NSObject
@propertysqlite3 *database; //数据库句柄
@propertysqlite3_stmt *statement; //sql语句
@property char *errmsg;
-(BOOL) openDatabase; //打开数据库 这个函数一般不直接调用,而是直接调用对数据库操作的函数
-(void) closeDataBase; //关闭数据库 这个函数一般不直接调用,而是直接调用对数据库操作的函数
-(NSString *) dataFilePath:(NSString *)fileName; //返回数据库存储路径 这个函数一般不直接调用,而是直接调用对数据库操作的函数
/**
* 说明: 给定一个SQL语句 插入或者编辑一个数据
* 语句格式 :
* 插入:[insert (文件名)values(data1, data2, data3, ...);]
* 编辑:[update(文件名) set (字段名)=(修改后的数据) where(字段名)=(修改前的数据);]
*/
-(BOOL) insertOrUpdateData:(NSString *)sql;
-(NSMutableArray *) getUsers; //以数组的形势,获取所有用户
-(int) getCountOfDatabase; //获取当前数据库的数量
@end
////////////////////////////////////////////////////
#import "SqliteHelp.h"
@implementation SqliteHelp
@synthesize database =_database;
@synthesize statement =_statement;
@synthesize errmsg =_errmsg;
-(BOOL) openDatabase
{
if (sqlite3_open([[selfdataFilePath:DB_NAME]UTF8String], &_database) ==SQLITE_OK) {
constchar* key = [@",66c9a^N"UTF8String]; //数据库文件加密
sqlite3_key(_database, key, (int)strlen(key)); //数据库文件加密
NSLog(@"\n===数据库打开or创建成功===\n");
returnYES;
}else{
NSLog(@"\n===数据库打开失败===\n");
}
return NO;
}
-(void) closeDataBase
{
sqlite3_close(_database);
}
-(NSString *) dataFilePath:(NSString *)fileName
{
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,
YES);
NSString *documentsDirectory = [pathsobjectAtIndex:0];
return [documentsDirectorystringByAppendingPathComponent:fileName];
}
-(BOOL) insertOrUpdateData:(NSString *)sql
{
if ([selfopenDatabase]) {
if (sqlite3_exec(_database, [sqlUTF8String],nil, &_statement, &_errmsg) !=SQLITE_OK) {
NSLog(@"\n===插入数据失败===\n");
NSLog(@"\n==sql Error:%s",_errmsg);
returnNO;
}else{
NSLog(@"\n===插入数据成功===\n");
returnYES;
}
}
sqlite3_close(_database);
return NO;
}
-(NSMutableArray *) seeDatabase
{
NSMutableArray *users = [[NSMutableArrayalloc]init];
NSString *sql = [NSStringstringWithFormat:@"SELECT * FROM t_relive"];
if ([selfopenDatabase]) {
if (sqlite3_prepare_v2(_database, [sqlUTF8String], -1, &_statement,nil) ==SQLITE_OK) {
while (sqlite3_step(_statement) ==SQLITE_ROW ) {
// User *user = [[Question alloc] init];
int name =sqlite3_column_int(_statement,0);
// [user setName:[NSString stringWithUTF8String:name]];
int index =sqlite3_column_int(_statement,1);
// [user setId:[[NSString stringWithUTF8String:index] intValue]];
// [users addObject: user];
NSLog(@"%i=%i",name,index);
}
sqlite3_finalize(_statement);
}
}
sqlite3_close(_database);
return users;
}
-(int) getCountOfDatabase
{
int count =0;
NSString *sql = [NSStringstringWithFormat:@"SELECT * FROM User"];
if ([selfopenDatabase]) {
if (sqlite3_prepare_v2(_database, [sqlUTF8String], -1, &_statement,nil) ==SQLITE_OK) {
while (sqlite3_step(_statement) ==SQLITE_ROW) {
count ++;
}
sqlite3_finalize(_statement);
}
}
return count;
}
@end
/////////////////////////////////////////////////////////////////
这里实现 输入sql表 生成数据库,可以在控制台查错
#import "AppDelegate.h"
#import "SqliteHelp.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
[selfbuildDatabase];
[selfinsertDatabase];
}
- (void) buildDatabase
{
NSError *error;
NSString *textFile = [NSStringstringWithContentsOfFile:[[NSBundlemainBundle]pathForResource:@"schema.sqlite.tables.sql"ofType:nil]encoding:NSUTF8StringEncodingerror:&error];
if (textFile ==nil) {
NSLog(@"Error reading text file. %@", [errorlocalizedFailureReason]);
}
NSArray *row = [textFilecomponentsSeparatedByString:@";"];
NSInteger count = [rowcount];
SqliteHelp *t = [SqliteHelpnew];
for (int i=0; i<count; i++) {
NSString *tempString = [NSStringstringWithFormat:@"%@;",row[i]];
NSLog(@"%@",tempString);
[tinsertOrUpdateData:tempString];
}
}
-(void) insertDatabase
{
NSError *error;
NSString *textFile = [NSStringstringWithContentsOfFile:[[NSBundlemainBundle]pathForResource:@"schema.sqlite.data.sql"ofType:nil]encoding:NSUTF8StringEncodingerror:&error];
if (textFile ==nil) {
NSLog(@"Error reading text file. %@", [errorlocalizedFailureReason]);
}
NSArray *row = [textFilecomponentsSeparatedByString:@";"];
NSInteger count = [rowcount];
SqliteHelp *t = [SqliteHelpnew];
for (int i=0; i<count; i++) {
NSString *tempString = [NSStringstringWithFormat:@"%@;",row[i]];
NSLog(@"%@",tempString);
[tinsertOrUpdateData:tempString];
}
}
@end
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有