введите описание изображения здесь Удалите запись с Id: 2 и Name: Gosling из показанной ниже таблицы. После удаления записей, которые необходимо переупорядочить, обновите Id всех оставшихся записей с использованием приведенного ниже кода c.Но это не переупорядочение, а обновление одного и того же идентификатора для всей записи.Пожалуйста, помогите мне решить эту проблему.Заранее спасибо.
Before delete
Id|Name | MacId| State | Type
-----------------------------
1|Dennis|456731|NOT CONNECTED|NOT FAVORITE
2|Gosling|456731|NOT CONNECTED|NOT FAVORITE
3|MOTO|4568971|NOT CONNECTED|NOT FAVORITE
4|KARBAN|4568971|CONNECTED|NOT FAVORITE
5|Lenovo|4568971|CONNECTED|NOT FAVORITE
After deleting 2nd record It should be like as shown in the below table.
Id|Name |MacId |State | Type
--------------------------------
1|Dennis|456731|NOT CONNECTED|NOT FAVORITE
2|MOTO|4568971|NOT CONNECTED|NOT FAVORITE
3|KARBAN|4568971|CONNECTED|NOT FAVORITE
4|Lenovo|4568971|CONNECTED|NOT FAVORITE
deleteDevice () этот метод заключается в удалении записи и обновлении оставшегося идентификатора.
void deleteDevice(char deviceId, char *table)
{
sqlite3 *db;
char *err_msg = 0;
sqlite3_stmt *res;
char query[100];
int rc = sqlite3_open("phonebook2.db", &db);
int lastDeveciId=getLastDeviceId(table);
if (rc != SQLITE_OK)
{
fprintf(stderr, "Cannot open database: %s\n",sqlite3_errmsg(db));
sqlite3_close(db);
return;
}
sprintf(query,"delete from %s where DEVICE_ID =%d;",table,deviceId) ;
rc = sqlite3_exec(db, query, NULL, 0, 0);
if (rc != SQLITE_OK) {
enter code here
fprintf(stderr, "Failed to fetch data: %s;\n", sqlite3_errmsg(db));
sqlite3_close(db);
return;
}
if(lastDeveciId > deviceId)
{
for(int i=deviceId;i<lastDeveciId;i++)
{
sprintf(query,"update %s set DEVICE_ID=%d where DEVICE_ID =%d",table,i-1,i);
printf("Query:%s\n",query);
printf("Breakpoint\n");
rc = sqlite3_exec(db, query, NULL, 0, 0);
update(table,i);
}
}
sqlite3_close(db);
}
int main()
{
deleteDevice(0x02,"paired_phones");
return 0;
}