簡體   English   中英

Sqlite3 在數據庫中插入數據在 c 中不起作用

[英]Sqlite3 insert data in database does not work in c

   sqlite3_stmt *stmt;
   sqlite3_prepare_v2(db, "INSERT INTO links(NAME, LINK, SIZE, STARRED)  VALUES ('?' , '?', ? , 0);", 41, &stmt, NULL);
   if(stmt != NULL) {
      sqlite3_bind_text(stmt, 1, name, 0, SQLITE_TRANSIENT);
      sqlite3_bind_text(stmt, 2, link, 0, SQLITE_TRANSIENT);
      sqlite3_bind_int(stmt, 3, size);
      sqlite3_step(stmt);
      sqlite3_finalize(stmt);
   }else{
     printf("%sError during insertion in the database%s\n", RED, RST);
   }

  sqlite3_close(db);

Error during insertion in the database但不明白為什么,可能與sqlite3_prepare_v2相關但不知道是什么,我嘗試使用隨機數據“手動”執行查詢,它可以工作。

您將語句的第 2 項綁定兩次? 缺少第 3 項。

zSql 語句的大小為 69 個字符。 長度為 -1 對我們來說更好,因為默認情況下它將是以空字符結尾的字符串,並且會自動計算大小:

sqlite3_prepare_v2(db, "INSERT INTO links(NAME, LINK, SIZE, STARRED)  VALUES (?, ?, ? , 0);", -1, &stmt, NULL);

不要忘記第三個'? 在第三個論點的陳述中。 編輯:寫成? 在聲明中

剛剛通過更改sqlite3_prepare_v2()的第三個參數即zSql的最大長度(以字節為單位)來解決,47太小了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM