闲来整理了下之前使用sqllite的代码,创建表,创建连接,增删改查。基础类型的操作都很简单。
flex官方提供文档很完善了,参见http://help.adobe.com/zh_CN/as3/dev/WSd47bd22bdd97276f1365b8c112629d7c47c-8000.html#WSd47bd22bdd97276f-322c934e1262ad0c455-8000
关于Blob文件读取的问题说明下,Adobe默认存储的Blob编码方式是AMF格式的,所以直接读取使用其他语言比如java、c++等存储的大数据格式作为资源将获得错误的结果,因此读取的时候需参考CAST语法,官方说法如下:
同样使用java等语言读取as存储的数据也会获得错误。具体区别貌似是aodbe在二进制文件的首段存储了4位的标签内容( AMF 格式),因此在使用java等语言读取as写入的信息后需扔弃前四位存储的信息。下面是一个将as存储的图片二进制使用java读取的范例,如果不截取前4位信息,那么直接保存的png图片将不被识别
1 public class SQLListeTest { 2 3 public static void main(String args[]){ 4 5 String databaseName = "C:/Documents and Settings/HANSHAOJIE/桌面/db.sqllite"; 6 try{ 7 Class.forName("org.sqlite.JDBC"); 8 Connection conn = DriverManager.getConnection("jdbc:sqlite:/" 9 + databaseName); 10 11 Statement stat = conn.createStatement(); 12 String sql = "SELECT * FROM testTable where id = '15'"; 13 ResultSet rs = stat.executeQuery(sql); 14 if(rs.next()){ 15 16 String s = rs.getString("id"); 17 System.out.println(s); 18 byte[] by = rs.getBytes("imageData"); 19 20 for (int i = 0; i < by.length; i++){ 21 byte b = by[i]; 22 System.out.print((char)b); 23 } 24 25 //创建一个新文件来存储读取的图片二进制信息 26 File f = new File("C:/Documents and Settings/HANSHAOJIE/桌面/test.png"); 27 f.createNewFile(); 28 FileOutputStream fou = new FileOutputStream(f); 29 for (int i = 4; i < by.length; i++) { 30 int j = by[i]; 31 fou.write(by[i]); 32 } 33 fou.flush(); 34 fou.close(); 35 } 36 } 37 catch(Exception ex){ 38 ex.printStackTrace(); 39 } 40 } 41 }