我原来写一过一篇文章介绍如何使用第三方的 
 sqliteBD库来操作 
 sqlite数据库( 
 点击查看)。当时存取的都是一些数字、字符串这样的基本数据类型,有网友问如果想存个图片进去应该怎么做。本文演示如何实现 
 Data类型的数据存取。 
  
  
 
  
   
   
 
  
 
 
 
     
     
   
  
 
 
  
   
   
         2 
        
       
 
  
 源码下载: 
  
 hangge_1578.zip 
  
 
1,实现原理
   (1)首先我们建表的时候,用于保存 
  Data数据的字段要使用大数据类型,比如: 
  BLOB(二进制数据) 
 
 
 
   (2)读取操作同其他数据类型的读取没什么差别。不过插入的时候要注意,不能直接将数据拼接到 
  sql语句中,而是要使用预处理语句: 
 
 
 |  
        
         1 
         
       
         2 
          |  
       
       let 
         sql = 
         "insert into t_image(idata) values(?)" 
        db.execute(sql: sql,parameters:[imageData]) 
         |  
     
 2,效果图
 
 
   (1)程序启动后会自动判断是否存在图片表,没有的话就创建一张。表字段很简单,就一个 
  ID主键,和一个 
  BLOB类型的字段(用于存储图片数据) 
 
 
 
   (2)点击“ 
  保存”按钮,将项目中的 
  0.png这张图片存储到图片表中。 
 
 
 
   (3)点击“ 
  读取”按钮,从图片表中取出图片数据,并显示在 
  imageview中。 
 
 
 
 3,样例代码
 
 import 
         UIKit 
         
        class 
           
        ViewController 
         : 
         UIViewController 
         { 
         
        @IBOutlet 
         weak 
         var 
         imageView: 
         UIImageView 
         ! 
        db: 
           
        sqliteDB 
         ! 
        override 
           
        func 
         viewDidLoad() { 
        super 
           
        .viewDidLoad() 
        //获取数据库实例 
        db = 
         .shared 
        //打开数据库 
          
        _ = db.openDB() 
          
        //如果表还不存在则创建表(其中uid为自增主键) 
          
        result = db.execute(sql: 
           
        "create table if not exists t_image(uid integer primary key,idata blob)" 
         ) 
        print 
         ( 
         "表创建完毕:\(result)" 
         ) 
        } 
          
        //点击保存 
          
        @IBAction 
           
        saveData(_ sender: 
         Any 
         ) { 
        //获取图片并转换为Data 
          
        imageURL = 
           
        Bundle 
         .main.url(forResource: 
         "0" 
         ,withExtension: 
         "png" 
         )! 
        imageData = try! 
           
        Data 
         (contentsOf: imageURL) 
        //将Data数据插入到数据库 
          
        "insert into t_image(idata) values(?)" 
          
        result = db.execute(sql: sql,parameters:[imageData]) 
          
        "数据保存完毕:\(result)" 
           
        ) 
        } 
          
        //点击加载 
          
        loadData(_ sender: 
           
        ) { 
        data = db.query(sql: 
           
        "select * from t_image" 
         ) 
        if 
           
        data.count > 0 { 
        //获取最后一行数据显示 
          
        image = data[data.count - 1] 
          
        if 
           
        imgData = image[ 
         "idata" 
         ] 
         as 
         ? 
         { 
        self 
           
        .imageView.image = 
         UIImage 
         (data: imgData) 
        "数据读取完毕" 
           
        ) 
        } 
          
        } 
          
        } 
          
        didReceiveMemoryWarning() { 
          
        .didReceiveMemoryWarning() 
          
        } 
          
        } 
          
         |  
      
     
   
原文出自: www.hangge.com 转载请保留原文链接: http://www.hangge.com/blog/cache/detail_1578.html