我正在尝试在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")
}
}
答案 0 :(得分:3)
您的statement
应为COpaquePointer
类型,并使用&amp; 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)
}
答案 1 :(得分:0)
看起来您可能正在尝试使用Cite库为SQLite 3和Swift集成SQLite 3数据库。哎呀!这是可能的,但有点冒险。
更快,更清晰的方法可能是使用ORM库,例如我的LabQLite(及其关联的模型生成器工具:LabQLite Model Generator)。
否则,如果您必须直接使用低级SQLite 3 C库,那么是,COpaquePointer
(及其关联...请参阅Using Swift with Cocoa and Objective-C (Swift 3.0.1)), Tushar Sharma提到过,可能就是你所需要的。