ios 向sqlite数据库插入和读取图片数据
向sqlite数据库插入和读取图片数据 (for ios) 假定数据库中存在表 test_table(name,image), 下面代码将图片文件test.png的二进制数据写到sqlite数据库:
char *name = "test";
NSString * nameString = [NSString stringWithCString:name encoding:NSUTF8StringEncoding];
NSString * filePath = [[NSBundle mainBundle] pathForResource:nameString ofType:@"png"];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
NSData * imgData = UIImagePNGRepresentation([UIImage imageWithContentsOfFile:filePath]);
const char * sequel = "insert into test_table(name,image) values(?,?)"; sqlite3_stmt * update;
if (sqlite3_prepare_v2(database, sequel, -, &update, NULL) == SQLITE_OK)
{
sqlite3_bind_text(update, , name, -, NULL);
sqlite3_bind_blob(update, , [imgData bytes], [imgData length], NULL);
if( sqlite3_step(update) == SQLITE_DONE)
{
NSLog(@"已经写入数据");
}
sqlite3_finalize(update);
}
}
else
{
NSLog(@"文件不存在");
} 下面代码从数据库中读取图片二进制数据,然后显示图片:
const char * sequel = "select image from test_table where name=?";
sqlite3_stmt * getimg;
if (sqlite3_prepare_v2(database, sequel, -, &getimg, NULL) == SQLITE_OK)
{
char *name = "test";
sqlite3_bind_text(update, , name, -, NULL);
if(sqlite3_step(getimg) == SQLITE_ROW)
{
int bytes = sqlite3_column_bytes(getimg, );
Byte * value = (Byte*)sqlite3_column_blob(getimg, );
if (bytes != && value != NULL)
{
NSData * data = [NSData dataWithBytes:value length:bytes];
UIImage * img = [UIImage imageWithData:data];
UIImageView * aview =[[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, IMAGE_WIDTH, IMAGE_HEIGHT)];
aview.image = img;
[self.view addSubview:aview];
[aview release];
}
}
sqlite3_finalize(getimg);
}
转:http://blog.csdn.net/moliyll/article/details/7953656
参考:http://wiki.eoe.cn/page/iOS_blog_page_96451.html
ios 向sqlite数据库插入和读取图片数据的更多相关文章
- Android版本升级同时Sqlite数据库的升级及之前数据的保留
http://www.cnblogs.com/wang340/archive/2013/05/06/3063135.html http://www.eoeandroid.com/forum.php?m ...
- 当向后台插入或读取JSON数据遇见回车时
今天在项目中发现.当插入或读取JSON数据时遇见回车符.返回JSON数据格式时会报错(firebug里体现为乱码),百度了一下发现JSON不支持字符串里存在回车! 解决的方法: 在向接口插入带json ...
- (第二章第二部分)TensorFlow框架之读取图片数据
系列博客链接: (第二章第一部分)TensorFlow框架之文件读取流程:https://www.cnblogs.com/kongweisi/p/11050302.html 本文概述: 目标 说明图片 ...
- iOS - OC SQLite 数据库存储
前言 采用 SQLite 数据库来存储数据.SQLite 作为一中小型数据库,应用 iOS 中,跟前三种保存方式相比,相对比较复杂一些. 注意:写入数据库,字符串可以采用 char 方式,而从数据库中 ...
- iOS 中SQLite数据库操作
在iOS中实现SQLite数据库的操作:1.导入框架(libsqlite3.0.tbd) 2.导入头文件<sqlite3.h> 3.实现数据的增删改查 实现简单 SQLite数据库操作 的 ...
- iOS - Swift SQLite 数据库存储
前言 采用 SQLite 数据库来存储数据.SQLite 作为一中小型数据库,应用 iOS 中,跟前三种保存方式相比,相对比较复杂一些. 注意:写入数据库,字符串可以采用 char 方式,而从数据库中 ...
- Android实例-操作sqlite数据库之Grid显示图片(XE8+小米2)
结果: 1.数据库文件,记得打包到程序中(assets\internal\). 操作方法: 1.新建firemonkey mobile application①菜单->File->New- ...
- 安卓开发笔记(十三):SQLite数据库储存(下)数据的增添,更改,删除,查询
SQLite数据库存储(下) 1.增添数据 对于添加数据的话我们只需要在主活动当中import新的包以及在主活动当中写上适当的代码就可以了,不需要在我们之前创建新的类当中书写新的代码.现在的主活动 ...
- iOS 中使用Base64编码方式编码图片数据
最近一个项目要求对图片数据简单加密下,就是那种不能直接看到图片内容就行.于是我使用了base64编码对图片数据进行编码,把图片2进制数据变成了base64的字符串,再把这个字符串保存到server的数 ...
随机推荐
- Linux磁盘分区UUID的获取及其UUID的作用
注:UUID-Universally Unique IDentifiers全局唯一标识符 一.Linux磁盘分区UUID的获取方法 1.[san@localhost ~]$ ls -l /dev/di ...
- 初始ASP.NET数据控件【续 DataList】
DataList控件 DataList控件也是一个常用的数据绑定控件,相对于GridView控件虽然没它那么强大的功能,但是灵活性却很强势.因为其本身就是一个富有弹性的控件.DataList控件可以 ...
- apache显示目录文件列表
在apache服务器下访问一个目录,如果没有index.html/index.php,则会报错. 为了访问文件夹: 1. 在 /var/www/html 目录下新建 /d/ mkdir d 2. t ...
- PHP中的__clone()
1 <?php 2 class Account { 3 public $balance; 4 5 public function __construct($balance) { 6 $this- ...
- mapreduce的组件介绍
第一部分:重要的组件 Combiner •什么是Combiner •combine函数把一个map函数产生的<key,value>对(多个key, value)合并成一个新的<key ...
- 2018-2019-2 网络对抗技术 20165301 Exp1 PC平台逆向破解
任务一 直接修改程序机器指令,改变程序执行流程 1.输入指令objdump -d pwn5301 | more反汇编pwn1文件. 通过反汇编,可以看到main函数中的call 804891,其机器码 ...
- SpringMVC的@RequestMapping和Controller方法返回值
本节内容: @RequestMapping Controller方法返回值 一.@RequestMapping 通过@RequestMapping注解可以定义不同的处理器映射规则. 1. URL路径映 ...
- 195 Tenth Line
Given a text file file.txt, print just the 10th line of the file. Example: Assume that file.txt has ...
- 使用prometheus抓取k8s的metrics作监控时,cAdvisor和kubelet配置有何差别?
按网上说法: 目前cAdvisor集成到了kubelet组件内,可以在kubernetes集群中每个启动了kubelet的节点使用cAdvisor提供的metrics接口获取该节点所有容器相关的性能指 ...
- Luogu 1903 数颜色 | 分块
Luogu 1903 数颜色 | 分块 莫队不会啊-- 这道题直接分块也能卡过! 这道题的做法很有趣:对于每个位置i,记录它的颜色a[i]上一次出现的位置,记为pre[i]. 这样在查询一个区间[l, ...