我在c项目上使用sqlite3库。我有一个这样的数据库:
| Time | Message | ID | Temp |
|--------|-----------|------|--------|
|09:05:37| 1514 | 62 | 35 |
|10:14:45| 1515 | 43 | 14 |
|11:18:50| 1997 | 28 | 43 |
|08:04:23| 1998 | 28 | 50 |
消息是一个自动增量值。我正在尝试做的事情和我的问题是:
int ID_in;
printf("Enter the ID you want to check: ");
scanf("%d", &ID_in);
首先,用户将输入一个值,我必须查找该值是否出现在ID列中,如果出现,则可以开始操作。由于用户将输入一个值,我应该在数据库上使用
sqlite3_bind()
函数将ID_in
与数据库上的值进行比较吗?如果
ID_in
出现在ID列上,我必须在与ID_in值相同的行上的Message列上找到最大值,因为ID列上可能有多个ID_in
值。例如,如果ID_in
为28,我必须访问Message值最高的行,为此,我必须访问Message值为1998的行。访问该行后,我应该在该行上打印所有列。例如,如果ID_in为28,则在ID列上找到值28。然后找到“消息”列的最大值,即1998。然后在该行上打印“时间”,“消息”,“ ID”,“温度”,在本示例中为08:04:23、1998、28、50。
最佳答案
是的,您可以使用prepared statement
和sqlite_bind
将用户输入传递给查询。
要选择具有最高messsage
值的行,可以使用,Select * from [table_name] where id = [user_input] order by message desc limit 1;