专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构

使用数据库缓存微博数据

使用数据库的好处:

  • 在查看微博数据的时候,如果本地有保存直接获取本地的数据.不用在去服务器请求数据,节省用户流量
  • 当没有网络的时候,加载本地的数据

准备工作

  • CocoaPods 集成 FMDB
    use_frameworks!
    pod 'FMDB'
    

建立单例

/*
数据库操作:
    1.打开数据库
    2.创建表
    3.操作数据
*/
class HMSQLiteManager: NSObject {
    static let shared = HMSQLiteManager()

    var dbQueue: FMDatabaseQueue

    override init() {
        let dbPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last!.appending("/status.db")

        print("dbPath: \(dbPath)")

        dbQueue = FMDatabaseQueue(path: dbPath)

        super.init()
        // 创建数据表
        createTable()
    }

    private func createTable() {
        // 之前的sql语句都是在代码里面在写的,通过文件来加载sql语句,在文件中可以编写多条sql语句

        // 获取table.sql文件的路径
        let bundlePath = Bundle.main.path(forResource: "tables", ofType: "sql")!

        // 加载table.sql文件里的内容
        let sql = try! String(contentsOfFile: bundlePath)
        print("加载文件sql: \(sql)")

        dbQueue.inDatabase { (db) -> Void in
            if let db = db, db.executeStatements(sql) {
                print("创建表成功")
            }
        }
    }
}

数据表设计

statusId stauts userId
微博Id 取的单条微博的 JSON 字符串 登录用户的Id
微博Id 取的单条微博的 JSON 字符串 登录用户的Id

使用Navicat在本地创建一个数据库.方便测试数据库操作

准备创建数据表 SQL

  • 使用新浪微博返回的 statusId 作为主键,主键不再使用自动增长
  • 数据表中设置 userId,保证同一个数据库中能够缓存多个账户的微博信息
  • 建立 status 字段保存从服务器返回的完整微博 JSON 字符串
  • 添加 Resource 文件夹,在 Resource 文件夹里添加 table.sql 文件.从Navicat复制 DDL 创表 sql:
    -- 创建T_Status数据表
    CREATE TABLE "T_Status" (
    "statusId" INTEGER NOT NULL,
    "status" TEXT,
    "userId" INTEGER,
    PRIMARY KEY("statusId")
    )
    
  • DDL 创建数据表 sql 需要添加 IF NOT EXISTS,最后添加 ;
  • AppDelegatedidFinishLaunching 添加:
    // 打开数据库
    SQLiteManager.shared
    
  • 测试 数据库数据表 是否创建成功

results matching ""

    No results matching ""