【问题标题】:Use of undeclared type 'sqlite3_stmt'使用未声明的类型'sqlite3_stmt'
【发布时间】:2017-07-09 14:42:06
【问题描述】:

我正在尝试在 Swift 3.0 的 Sqlite 中插入一个值。但我收到一个错误“使用未声明的类型'sqlite3_stmt'。 谁能帮我解决这个问题或让我知道我做错了什么?

#import <sqlite3.h> (in bridging header)

var statement: sqlite3_stmt? = nil
var database = DBConnectionManager.getDatabaseObject()
var sQuery: String = "insert into tblfavoritemaster(category_type,quote_text,category_id) values('abc','test','3')"

    if sqlite3_prepare_v2(database, sQuery.utf8, -1, statement, nil) == SQLITE_OK {
        if sqlite3_step(statement) == SQLITE_DONE {
            print("Insert Successfully")
        }
    }

【问题讨论】:

    标签: ios sqlite swift3


    【解决方案1】:

    您的statement 应该是COpaquePointer 类型并使用&Statement

    访问它
    func insert() {
          var statement: COpaquePointer = nil
    
         let insertStatementString = "INSERT INTO Contact (Id, Name) VALUES (?, ?);"
    
          // 1
          if sqlite3_prepare_v2(db, insertStatementString, -1, &statement, nil) == SQLITE_OK {
            let id: Int32 = 1
            let name: NSString = "Ray"
    
            // 2
            sqlite3_bind_int(statement, 1, id)
            // 3
            sqlite3_bind_text(statement, 2, name.UTF8String, -1, nil)
    
            // 4
            if sqlite3_step(statement) == SQLITE_DONE {
              print("Successfully inserted row.")
            } else {
              print("Could not insert row.")
            }
          } else {
            print("INSERT statement could not be prepared.")
          }
          // 5
          sqlite3_finalize(statement)
        }
    

    【讨论】:

      【解决方案2】:

      看起来您可能正在尝试使用 SQLite 3 和 Swift 的 C 库集成 SQLite 3 数据库。哎呀!有可能,但有点冒险。

      一种更快、更简洁的方法可能是使用 ORM 库,例如我的 LabQLite(及其相关的模型生成器工具:LabQLite Model Generator)。

      否则,如果您必须直接使用低级 SQLite 3 C 库,那么是的,COpaquePointer(及其关联...参见Using Swift with Cocoa and Objective-C (Swift 3.0.1)),因为Tushar Sharma 有提到的,可能是你需要的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-01
        • 2018-08-03
        • 2017-12-27
        • 2017-02-21
        • 2018-12-28
        • 2015-04-15
        相关资源
        最近更新 更多