C++ sqlite3“U准备失败,带有”;近;表";:语法错误“;

C++ sqlite3“U准备失败,带有”;近;表";:语法错误“;,c++,sql,sqlite,C++,Sql,Sqlite,我试图使用SQLite的编译语句将行插入表中: rc = sqlite3_prepare(db, "INSERT INTO TABLE test VALUES (?,?,?,?)", -1, &stmt, 0); if( rc!=SQLITE_OK ) printf("%s", sqlite3_errmsg(db)); sqlite3\u prepare返回1,而sqlite3\u errmsg返回: “表”附近:语法错误 表是保留关键字。为了避免语法错误,必须使用括号对其进行

我试图使用SQLite的编译语句将行插入表中:

rc = sqlite3_prepare(db, "INSERT INTO TABLE test VALUES (?,?,?,?)", -1, &stmt, 0);
if( rc!=SQLITE_OK )
    printf("%s", sqlite3_errmsg(db));
sqlite3\u prepare
返回1,而
sqlite3\u errmsg
返回:

“表”附近:语法错误


是保留关键字。为了避免语法错误,必须使用括号对其进行转义

INSERT INTO test VALUES (?,?,?,?)

是保留关键字。为了避免语法错误,必须使用括号对其进行转义

INSERT INTO test VALUES (?,?,?,?)
您不应该在查询中添加“表”:

rc = sqlite3_prepare(db, "INSERT INTO  test VALUES (?,?,?,?)", -1, &stmt, 0);
if( rc!=SQLITE_OK )
    printf("%s", sqlite3_errmsg(db));
命名要插入的字段也是一种很好的做法。这样,如果您向表中添加字段,您的查询将不会中断…

您不应该在查询中添加“表”:

rc = sqlite3_prepare(db, "INSERT INTO  test VALUES (?,?,?,?)", -1, &stmt, 0);
if( rc!=SQLITE_OK )
    printf("%s", sqlite3_errmsg(db));

命名要插入的字段也是一种很好的做法。所以,如果您向表中添加字段,您的查询将不会中断…

顺便说一句,
插入[表]
仍然给我一个错误,这次是
测试附近的语法错误
,但删除表也修复了该错误,现在返回成功。不仅仅是
插入测试值(?,,,?)
起初我以为你的表叫做
表,但我错了。您的表名是
test
对吗?所以您应该删除
。是的,我的表名为
测试
。顺便说一句,
插入[表]
仍然给我一个错误,这次
测试附近的语法错误
,但删除表也修复了这个错误,现在它返回了成功。不仅仅是
插入测试值(?,,,?)
起初我以为你的表叫做
表,但我错了。您的表名是
test
对吗?因此,您应该删除
。是的,我的表名为
test