gpt4 book ai didi

c - 在 C 中使用 SQLite 的 INSERT INTO 时遇到问题

转载 作者:行者123 更新时间:2023-11-30 14:46:45 25 4
gpt4 key购买 nike

因此,我尝试使用 C 语言中的 SQLite 将数据插入表中。每当我执行此操作而不指定要插入数据的列时,插入都会正常工作。但是,我想在我的列之一中使用主键属性,因此我尝试使用 INSERT INTO 表名(列)VALUES(值)方法,但它不起作用。

表创建:

snprintf(sql_query,sizeof(sql_query), "CREATE TABLE IF NOT EXISTS %s(%s INTEGER PRIMARY KEY,%s TEXT NOT NULL, %s TEXT NOT NULL, %s TEXT NOT NULL,%s REAL NOT NULL, %s REAL NOT NULL, %s REAL NOT NULL);",tbl_id1,tbl_col1,tbl_col2,tbl_col3,tbl_col4,tbl_col5,tbl_col6,tbl_col7);
rc = sqlite3_exec(db, sql_query, callback, 0, NULL);

插入:

sprintf(sql, "INSERT INTO %s (%s,%s,%s,%s,%s,%s)  VALUES ('%d/%d/%d','%d:%d:%d','4','%d','%d','7');",tbl_id1,tbl_col2,tbl_col3,tbl_col4,tbl_col5,tbl_col6,tbl_col7,year,month,day,hour,min,sec,peak,real);
int ic = sqlite3_exec(db, sql, callback, 0, NULL);

正如我所说,如果我在不指定要插入数据的列的情况下执行此操作,效果会很好。

编辑:Names of my variables

#define db_name     "db_test.db"
#define tbl_id1 "Meter1"
#define tbl_id2 "Meter2"
#define tbl_id3 "Meter3"
#define tbl_col1 "Run[#]"
#define tbl_col2 "Date[YY-MM-DD]"
#define tbl_col3 "Time[HH:MM:SS]"
#define tbl_col4 "Accept[True/False]"
#define tbl_col5 "F_Peak[N/cm]"
#define tbl_col6 "m_Peak[g]"
#define tbl_col7 "Cycle[s]"

最佳答案

问题出在列名称中。对于给定的值,sqlite3_exec 返回 SQLITE_ERROR (1) 而不是 SQLITE_OK (0)。

在 INSERT 查询中使用不带括号的列名(以及其中的所有内容)。对于您的示例,请使用以下列名称:

#define tbl_col1_clear    "Run"
#define tbl_col2_clear "Date"
#define tbl_col3_clear "Time"
#define tbl_col4_clear "Accept"
#define tbl_col5_clear "F_Peak"
#define tbl_col6_clear "m_Peak"
#define tbl_col7_clear "Cycle"

关于c - 在 C 中使用 SQLite 的 INSERT INTO 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51971609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com