DataBase 。h
#import#import "Yly.h"#import@interface SqliteData : NSObject
// 定义全局变量
{
sqlite3 *db;
}
// 单例方法
+(instancetype)initData;
// 初始化数据库
-(void)initSqlData;
// 初始化数据库表格
-(void)initSqlTableData;
// 添加数据
-(void)addSqlData:(Yly *)data;
// 修改数据
-(void)changeSqlData:(Yly *)data;
// 删除数据
-(void)deleteSqlData:(NSInteger)deleData;
// 查询数据
-(NSMutableArray *)showSqlAllArr;
// 关闭数据库
-(void)closeSqlData;
sqlData (DataBase)
#import "SqliteData.h"
// 定义一个静态变量
static SqliteData *sql = nil;
@implementation SqliteData
// 单例方法
+(instancetype)initData
{
if (!sql) {
sql = [[SqliteData alloc] init];
}
return sql;
}
// 初始化数据库
-(void)initSqlData
{
// 创建沙盒路径
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
// 拼接
NSString *newPath = [path stringByAppendingString:@"/1511E.db"];
NSLog(@"-------------%@",newPath);
// 判断
if (sqlite3_open([newPath UTF8String], &db) == SQLITE_OK) {
NSLog(@"数据库打开成功");
[self initSqlTableData];
}else{
NSLog(@"数据库打开失败");
}
}
// 初始化数据库表格
-(void)initSqlTableData
{
// 创建sql语句
const char *sql = "create table if not exists Ylys(ylyID integer primary key, pathStr text, textPath text)";
// 预编译指针
sqlite3_stmt *stmt;
// 打开数据库接口
sqlite3_prepare_v2(db, sql, -1, &stmt, nil);
// 判断
if (sqlite3_step(stmt) == SQLITE_DONE) {
NSLog(@"数据库表格打开成功");
}else{
NSLog(@"数据库表格打开失败");
}
// 销毁接口
sqlite3_finalize(stmt);
}
// 添加数据
-(void)addSqlData:(Yly *)data
{
// 添加 sql 语句
const char *sql = "insert into Ylys values(null, ?, ?)";
// 预编译指针
sqlite3_stmt *stmt;
// 打开数据库接口
sqlite3_prepare_v2(db, sql, -1, &stmt, nil);
// 绑定数据库接口
sqlite3_bind_text(stmt, 1, [data.pathStr UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(stmt, 2, [data.textPath UTF8String], -1, SQLITE_TRANSIENT);
// 执行预编译接口
sqlite3_step(stmt);
// 销毁接口
sqlite3_finalize(stmt);
}
// 修改数据
-(void)changeSqlData:(Yly *)data
{
// 修改 sql 语句
const char *sql = "update Ylys set pathStr = ?, textPath = ? where ylyID = ?";
// 预编译指针
sqlite3_stmt *stmt;
// 打开数据库接口
sqlite3_prepare_v2(db, sql, -1, &stmt, nil);
// 绑定数据库接口
sqlite3_bind_text(stmt, 1, [data.pathStr UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(stmt, 2, [data.textPath UTF8String], -1, SQLITE_TRANSIENT);
// 绑定主键 id
sqlite3_bind_int(stmt, 3, (int)(data.ylyID));
// 执行预编译指针
sqlite3_step(stmt);
// 销毁接口
sqlite3_finalize(stmt);
}
// 删除数据
-(void)deleteSqlData:(NSInteger)deleData
{
// 删除 sql 语句
const char *sql = "delete from Ylys where ylyID = ?";
// 预编译指针
sqlite3_stmt *stmt;
// 打开数据库接口
sqlite3_prepare_v2(db, sql, -1, &stmt, nil);
// 删除主键 id
sqlite3_bind_int(stmt, 1, (int)(deleData));
// 执行预编译指针
sqlite3_step(stmt);
// 销毁接口
sqlite3_finalize(stmt);
}
// 查询数据
-(NSMutableArray *)showSqlAllArr
{
// 查询 sql 语句
const char *sql = "select * from Ylys";
// 预编译指针
sqlite3_stmt *stmt;
// 打开数据库接口
sqlite3_prepare_v2(db, sql, -1, &stmt, nil);
// 创建数组
NSMutableArray *arr = [NSMutableArray array];
while (sqlite3_step(stmt) == SQLITE_ROW) {
// 初始化类
Yly *yyy = [[Yly alloc] init];
// 找到主键id
yyy.ylyID = sqlite3_column_int(stmt, 0);
yyy.pathStr = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)];
yyy.textPath = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 2)];
// 将数据添加到数组
[arr addObject:yyy];
}
// 销毁接口
sqlite3_finalize(stmt);
// 返回 数组
return arr;
}
// 关闭数据库
-(void)closeSqlData
{
sqlite3_close(db);
}
// 按钮的点击事件
-(void)didClickBtn:(UIButton *)sender
{
imgView.image = [QRCodeGenerator qrImageForString:tf.text imageSize:imgView.frame.size.width];
// 转换图片格式
NSData *imgData = UIImagePNGRepresentation(imgView.image);
// 获取沙盒路径
NSString *paths= [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) objectAtIndex:0];
// 拼接图片的文件路径
NSString *imageFilePath = [NSString stringWithFormat:@"%@/%@.png",paths,tf.text];
NSLog(@"%@", [imgData writeToFile:imageFilePath atomically:YES]?@"存储成功":@"存储失败");
NSLog(@"0000-----======%@",imageFilePath);
Message *yly = [[Message alloc] init];
yly.pathStr = imageFilePath;
yly.textPath = tf.text;
[[SqliteData initData] initSqlData];
[[SqliteData initData] addSqlData:yly];
[[SqliteData initData] closeSqlData];
}
UITwoViewController
// 设置 内容
[[SqliteData initData] initSqlData];
marr = [[SqliteData initData] showSqlAllArr];
[[SqliteData initData] closeSqlData];
[myTable reloadData];
cell获取内容
NSLog(@"===%@",[marr[indexPath.row] textPath]);
cell.imageView.image = [UIImage imageWithContentsOfFile:[marr[indexPath.row] pathStr]];
cell.textLabel.text = [marr[indexPath.row] textPath];