我在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 statementsqlite_bind将用户输入传递给查询。
要选择具有最高messsage值的行,可以使用,

Select * from [table_name] where id = [user_input] order by message desc limit 1;

10-07 13:11
查看更多