Ama*_*yer -1 c database sqlite
所以我正在使用 sqlite 并创建了这个数据库:
sql = "CREATE TABLE COMPANY(" \
"NAME TEXT PRIMARY KEY NOT NULL," \
"LAST TEXT," \
"PIN INT," \
"DL INT,"\
"SSN INT,"\
"EMAIL TEXT,"\
"BALANCE REAL );";
Run Code Online (Sandbox Code Playgroud)
我正在尝试在 NAME 中插入一个值,但它不断给出错误“没有这样的列:John
这就是我尝试插入它的方式:(假设一切都已声明)
strcpy(text, "John");
sprintf (sql,"INSERT INTO ATM (NAME,PIN) VALUES (%s',%d);",text,number);
Run Code Online (Sandbox Code Playgroud)
当我改用这行代码时:
sprintf (sql,"INSERT INTO ATM (NAME,PIN) VALUES ('john',%d);",number);
Run Code Online (Sandbox Code Playgroud)
它起作用了,我能够插入这两个值。
为什么第一个不工作?请有人帮忙
谢谢
由于我希望您使用预准备语句,因此我将使用预准备语句复制您的代码。
sqlite3_stmt *stmt;
sqlite3_prepare_v2(db, "INSERT INTO ATM (NAME,PIN) VALUES (?,?);", 41, &stmt, NULL);
if(stmt != NULL) {
sqlite3_bind_text(stmt, 1, "John", SQLITE_TRANSIENT);
sqlite3_bind_int(stmt, 2, number);
sqlite3_step(stmt);
sqlite3_finalize(stmt);
}
Run Code Online (Sandbox Code Playgroud)
使用sprintf创建你的发言是不安全的和容易出错的,你应该了解SQL注入
| 归档时间: |
|
| 查看次数: |
2529 次 |
| 最近记录: |