flex sqlite 操作blog 二进制数据
1, 通常的操作方式:
首先我们建立表:CREATE TABLE "pages" ("id" varchar, "data" blob),然后了使用sql 语句。
sql = "SELECT id, CAST(data AS ByteArray) AS data FROM pages"
flex 的代码如下:
sql = "SELECT id, CAST(data AS ByteArray) AS data FROM pages"
SQLConnection connection = new SQLConnection();
var file:File = File.applicationDirectory.resolvePath("assets\db\data.db");
connection.open(file); var state:SQLStatement = new SQLStatement();
state.text = sql;
state.sqlConnection = connection
state.execute(); var result:SQLResult = state.getResult();
var rows:int = result.data.length;
for(var i:int =0; i < rows; i++)
{ var row:Object = result.data[i];
var data:ByteArray = row[data];
}
2, 特殊的处理方式:
但是了,问题出现了,CAST(data AS ByteArray) AS data 这句,有时候,这个死活转不成bytearray,一直是0。这个问题困扰了我很久,我到adobe官网也查了半天,没有结果,最后找到sqlite 的 hex 函数。即改变sql 语句 SELECT id, hex(data) AS data FROM pages。
Hex 函数,其实就是把sqlite blob 类型的数据转换为字符串,具体怎么转了,比如是:55ffab这样。 其实每个字符是4个字节, 那55 就表示一个Byte 了,即8字节。所以了,我写两个函数,用来转换hex 为bytearray。
private function Hex2ByteArrayNew(hexStr:String):ByteArray
{
var ret:ByteArray = new ByteArray(); var leng:int = hexStr.length;
var newHexArrStr:String = "";
var step:int = 2;
var i:int = 0; while(i<leng)
{
try
{
//2 位一个byte
var tempI:int = parseInt(hexStr.substr(i,step),16); ret.writeByte(tempI); i += step;
}catch(e:Error)
{
trace(e);
}
}
return ret;
}
3, Bytearray 处理的一些技巧
(1) 刚开始读取的时候,必须设置position = 0。
(2) readUnsignedByte, 以及 readDouble ,这些是读取固定字节,转换成相应的数据类型。一般使用这些方法来读取。
flex sqlite 操作blog 二进制数据的更多相关文章
- sqlite3的图片的(二进制数据)存取操作
sqlite3的图片的(二进制数据)存取操作 前言 上篇介绍了sqlite3的一些常用插入操作方法和注意事项,在实际项目中遇到了图片缓存的问题,由于服务器不是很稳定,且受到外界环境的干扰(例如断电 ...
- SQLite数据库如何存储和读取二进制数据
SQLite数据库如何存储和读取二进制数据 1. 存储二进制数据 SQLite提供的绑定二进制参数接口函数为: int sqlite3_bind_blob(sqlite3_stmt*, int, co ...
- HTML5新特性之文件和二进制数据的操作
历史上,JavaScript无法处理二进制数据.如果一定要处理的话,只能使用charCodeAt()方法,一个个字节地从文字编码转成二进制数据,还有一种办法是将二进制数据转成Base64编码,再进行处 ...
- HTML5新特性之文件和二进制数据的操作 Blob对象
HTML5新特性之文件和二进制数据的操作 1.Blob对象 2.FileList对象 3.File对象 4.FileReader 对象 5.URL对象
- SQLite入门(二)读写二进制数据
//读二进制数据的函数 BOOL OpenBinDataFile(BYTE **pBUf,UINT &len) { if (pBUf == NULL) { re ...
- Java JDBC 操作二进制数据、日期时间
二进制数据 mysql提供了四种类型来存储二进制数据: TinyBlob 最多可存储255字节 Blob 最多可存储65KB MediumBlob 最多可存储16MB LongBlob ...
- [Android新手区] SQLite 操作详解--SQL语法
该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法 :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...
- 转载:【原译】Erlang构建和匹配二进制数据(Efficiency Guide)
转自:http://www.cnblogs.com/futuredo/archive/2012/10/19/2727204.html Constructing and matching binarie ...
- mongodb存储二进制数据的二种方式——binary bson或gridfs
python 版本为2.7 mongodb版本2.6.5 使用mongodb存储文件,可以使用两种方式,一种是像存储普通数据那样,将文件转化为二进制数据存入mongodb,另一种使用gridfs,咱们 ...
随机推荐
- 【bzoj题解】1008 越狱
题目描述 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱. 输入 输入两个整 ...
- RabbitMQ--Publish/Subscribe(五)
上篇文章中,我们实现了不同consumer接收不同级别的日志,这篇文章中,不以日志级别,使用不同日志来源.比如kernel.*.*.critical. 这就要使用topic exchange完成了.将 ...
- URL的井号
2010年9月,twitter改版. 一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为 http://twitter.com/username 改版后,就变 ...
- bootstrap File Input 多文件上传插件使用记录(二)删除原文件
在上一篇文章中,主要介绍了file input插件的初始化和多文件同步上传到服务器的相关配置等.这篇主要介绍file input插件的编辑等. 使用场景: 在后台管理框架中,一条数据中包含不固定的多张 ...
- pycharm、webstorm和idea激活码
pycharm ---> http://blog.csdn.net/kevinelstri/article/details/57413791 idea ---> http://idea.l ...
- java8 - 5
import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.Lis ...
- 程序设计实习MOOC / 程序设计与算法(一)第二周测验(2018春季)
编程题: 1:对齐输出 总时间限制: 1000ms 内存限制: 65536kB 描述 读入三个整数,按每个整数占8个字符的宽度,右对齐输出它们. 输入 只有一行,包含三个整数,整数之间以一个空格分 ...
- Asp.net vNext 学习之路(三)
asp.net vNext 对于构建asp.net 程序带来了一些重大的改变,让我们开发asp.net 程序的时候更加的方便和高效. 1,可以很容易的去管理客户端的包比如jquery,bootstra ...
- loadrunner添加变量检查点
LoadRunner设置登陆检查点 login() { lr_think_time(); web_url("passport2", "URL=http://test232 ...
- CentOS7 之基础设置及常见操作命令
1.Host SMbus controller not enabled 解决方法: 在 /etc/modprobe.d/blacklist.conf 文件里添加 blacklist i2c_piix4 ...