如何在 SQlite3 (ESP32 - Arduino IDE) 中插入整数值?
Posted
技术标签:
【中文标题】如何在 SQlite3 (ESP32 - Arduino IDE) 中插入整数值?【英文标题】:How to insert an Integer value in SQlite3 (ESP32 - Arduino IDE)? 【发布时间】:2020-07-25 08:28:55 【问题描述】:我正在尝试通过 sqlite3 库创建一个应包含 id(自动增量)和整数值的数据库。
现在我无法在 const char sql-query 中插入一个整数值。 我尝试通过 %l 插入,但由于 const char 类型失败。
rc = db_exec(db1, "INSERT INTO test1 VALUES (?, %l)", random(0,200));
这里是完整的代码:
void setup()
Serial.begin(115200);
sqlite3 *db1;
int rc;
SPI.begin();
SD_MMC.begin();
sqlite3_initialize();
if (db_open("/sdcard/test1.db", &db1))
return;
//SD_MMC.remove("/test1.db");
if(SD_MMC.exists("/test1.db"))
Serial.println("Database exists");
else
rc = db_exec(db1, "CREATE TABLE IF NOT EXISTS test1 (id INTEGER PRIMARY KEY, content);");
if (rc != SQLITE_OK)
sqlite3_close(db1);
return;
rc = db_exec(db1, "INSERT INTO test1 VALUES (?, ?)");
if (rc != SQLITE_OK)
sqlite3_close(db1);
return;
rc = db_exec(db1, "SELECT * FROM test1");
if (rc != SQLITE_OK)
sqlite3_close(db1);
return;
sqlite3_close(db1);
数据库的执行功能:
int db_exec(sqlite3 *db, const char *sql)
Serial.println(sql);
long start = millis();
int rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
if (rc != SQLITE_OK)
Serial.printf("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
else
Serial.printf("Operation done successfully\n");
Serial.print(F("Time taken:"));
Serial.println(millis()-start);
return rc;
【问题讨论】:
你试过了吗? rc = db_exec(db1, "INSERT INTO test1 VALUES (" + INTEGER + ", " + WHATEVER + ")"); rc = db_exec(db1, "INSERT INTO test1 VALUES (" + 1234 + ", " + 4568 + ")");它返回以下错误:sqlite3_sdmmc_modified:89:62: 错误:'const char*' 和 'const char [3]' 类型的无效操作数到二进制 'operator+' 你可以使用 to string() 操作符吗?也许这有帮助? 问题是,该函数只接受 const char。String(integer)
不起作用:请参阅上面帖子中的更新功能。
【参考方案1】:
您需要将字符串转换为 const char 数组。示例代码如下,您可以使用此方法添加值。
int Value1 = Function1();
int Value2 = Function2();
String s_Command = "INSERT INTO test1 VALUES ('" + Value1 + "','" + Value2 + "');";
const char *c_Command = s_Command.c_str();
rc = db_exec(db1, c_Command);
【讨论】:
以上是关于如何在 SQlite3 (ESP32 - Arduino IDE) 中插入整数值?的主要内容,如果未能解决你的问题,请参考以下文章