2017-02-20 4 views
1

Swift 3.0のSqliteに値を挿入しようとしています。しかし、私は宣言されていないタイプ 『sqlite3_stmt』のエラー」使用を取得しています。 誰も私がこの問題を解決するか、私は何も悪いことをやっているなら、私が知っているように助けることができますか?宣言されていない型 '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") 
     } 
    } 

答えて

3

YOUR statementはタイプCOpaquePointerでなければなりませんし、アクセスそれはむ〜!それは可能、しかしdiceyだ。あなたはSQLiteの3とスウィフトのためのCライブラリを使用してのSQLite 3データベースを統合しようとして同じよう&声明

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) 
    } 
0

が見える使用。

私のLabQLite(およびそれに関連するモデル生成ツール:LabQLite Model Generator)のように、より迅速でクリーンな方法でORMライブラリを使用することができます。あなたは直接低レベルのSQLite 3 Cライブラリを使用する必要がある場合

そうでない場合は、[はい、COpaquePointerTushar Sharmaが述べたように、何が必要であってもよいし、(とその仲間... Using Swift with Cocoa and Objective-C (Swift 3.0.1)を参照してください)。

関連する問題