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

SQLiteManager创建数据表

  • 如果是第一次运行,打开数据库之后,只能得到一个空的数据,没有任何的数据表
  • 为了让数据库正常使用,如果数据表不存在,需要执行 创表 操作

注意:创表操作本质上是通过执行 SQL 语句实现的

  • 执行 SQL 语句函数

      /**
      执行sql语句
      - parameter sql: sql语句
      - returns: sql语句是否执行成功
      */
      func execSQL(sql: String) -> Bool {
          /**
              sqlite执行sql语句:
    
              参数:
                  1.COpaquePointer: 数据库句柄
                  2.sql: 要执行的sql语句
                  3.callback: 执行完成sql后的回调,通常为nil
                  4.UnsafeMutablePointer<Void>: 回调函数第一个参数的地址,通常为nil
                  5.错误信息的指针,通常为nil
    
              返回值:
                  Int:    SQLITE_OK表示执行成功
          */
          return (sqlite3_exec(db, sql, nil, nil, nil) == SQLITE_OK)
      }
    
  • 创建数据表

      // MARK: - 创建数据表
      private func createTable() -> Bool {
    
          let sql = "CREATE TABLE IF NOT EXISTS T_Person ( \n" +
              "id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \n" +
              "name text, \n" +
              "age integer, \n" +
              "height real \n" +
          ")"
    
          print("sql: \(sql)")
    
          // 执行sql
          return execSQL(sql)
      }
    
  • 调整 openDB 函数

    // 创建数据表
    if createTable() {
      print("打开数据表成功")
    } else {
      print("打开数据表失败")
    }
    
代码小结
  • 创表 SQL 可以从 Navicat 中粘贴,然后做一些处理
    • " 替换成 '
    • 在每一行后面增加一个 \n 防止字符串拼接因为缺少空格造成 SQL 语句错误
    • 表名 前添加 IF NOT EXISTS防止因为数据表存在出现错误

调试代码中的SQL

  • SQL 打印出来
  • 粘贴到 Navicat 里来执行,可以更好的定位 SQL 语句错误的位置
  • 在拼接 SQL 时,最好在每句后面加 \n.可以避免缺少空格把2个单词误认为一个单词

results matching ""

    No results matching ""