我在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列上,我必须在Message列上找到最高值,该列位于具有ID_in值的同一行上,因为可能有多于ID_in
个值的值ID列。例如,如果ID_in
是28,我必须访问Message值最高的行,对于这一行,我必须访问Message值为1998的行。
访问该行后,我应该打印该行的所有列。例如,如果ID_in为28,则在ID列上找到值28。然后找到最高的Message列值,即1998.然后在该行上打印Time,Message,ID,Temp,这个例子是08:04:23,1998,28,50。
答案 0 :(得分:0)
是的,您可以使用prepared statement
和sqlite_bind
将用户输入传递给查询。
要选择可以使用的messsage
值最高的行,
Select * from [table_name] where id = [user_input] order by message desc limit 1;