Неизвестная функция C.sqlite3 и неверный параметр или другое неправильное использование API
Если sqlite3_open_v2 закомментирован, он выдает ошибку: неизвестная функция C.sqlite3, что странно, почему прототип должен влиять
db :=C.sqlite3(0)
? Но если он прокомментирован, я получаю неверный параметр или другое неправильное использование API. Что я делаю неправильно?
import sqlite
//fn C.sqlite3_open_v2(charptr, &&C.sqlite3, int, charptr) int
struct C.sqlite3_stmt { }
fn main(){
db := &C.sqlite3(0)
stm := &C.sqlite3_stmt(0)
db_path := ':memory:'
query := 'select 1'
C.sqlite3_open(db_path.str, &db)
err := C.sqlite3_prepare_v2(&db, query.str, -1, &stm, C.NULL)
if err != C.SQLITE_OK {
C.puts(C.sqlite3_errstr(err))
}
C.sqlite3_close(db)
}
1 ответ
Вы импортируете, фактически не используя его. в
sqlite
модуль, есть функции-оболочки, чтобы делать то, что вы хотите. Вот как вы это сделаете:
import sqlite
fn main() {
db_path := ':memory:'
db := sqlite.connect(db_path) or {
panic(err)
}
query := 'select 1'
val, code := db.exec(query) // declare code as 'mut' so it can be reused later
assert code == 101 // 101 is the same as C.SQLITE_DONE
println('$val') // prints the following:
// [sqlite.Row{
// vals: ['1']
// }]
// No closing right now, not sure if it's in the works or needed
}