我已经成功地从stackoverflow这里收集了代码,并设法创建了这个简单的代码。目标是列出数据行而不列出它们的列名。
不知怎么的,它工作了,但是它只打印前100行。剩下的4行没有打印。
#include <iostream>
#include <sqlite3.h>
sqlite3 *db;
int rc;
char *sql;
sqlite3_stmt *stmt;
int main()
{
rc = sqlite3_open("PairToSqliteDB.db", &db);
if (rc)
{
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
return (0);
}
else
{
fprintf(stderr, "Opened database successfully\n");
}
sqlite3_prepare_v2(db, "select Item_id, ItemName, SellPrice from SARISARI", -1, &stmt, NULL);
int c = 2;
for (int i = 0; i < SQLITE_ROW; i++)
{
rc = (sqlite3_step(stmt)) == SQLITE_ROW;
// %.2f = two decimals
// %6.2f = six digit right align with two deci.
// %-12s = twelve char left alignment
if (i % c == 1)
printf(" | ");
printf("%3i: %-12s = P%6.2f", sqlite3_column_int(stmt, 0), sqlite3_column_text(stmt, 1), sqlite3_column_double(stmt, 2));
if (i % c == 1)
printf("\n");
}
sqlite3_close(db);
return 0;
}
结果如下:'成功打开数据库
1:万宝路= P 8.00| 2:强大= P 7.00
3:更多= P 7.00| 4: Camel = P 6.00
5:姆尔博罗·帕克= 160.00比索|6:强力 Package = P130.00
7:更多白细胞= P130.00| 8:MrlboroPakRT = P145.00 '依此类推直到100,则其余项目不打印。
1条答案
按热度按时间cgh8pdjw1#
找到了解决方案,再次从某人谁张贴在这里stckoverflow,只是不记得谁张贴它。与一些操纵他的代码,我使它为我的目的工作。正如所建议的,我必须使用while循环。感谢他。
我的代码变更如下:
'sqlite3_stmt *stmt =空值; int rc = sqlite3_prepare_v2(数据库,“从SARISARI中选择项目标识,项目名称,销售价格”,-1,&stmt,空);如果(rc!= SQLITE_OK)返回rc;
}`