Я бы хотел присвоить значение, извлеченное из базы данных sqlite, c-struct, поэтому я делаю это следующим образом:
typedef struct
{
uint16_t shortID;
double temp;
unsigned long timestamp;
} location_t;
static uint8_t prv_set_value(lwm2m_data_t* dataP,
location_t* tempData)
{
uint8_t ret = COAP_205_CONTENT;
sqlite3 *db;
sqlite3_stmt *res;
// connect to sqlite
int rc = sqlite3_open("test.sqlite3", &db);
if (rc != SQLITE_OK) {
fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
else {
fprintf(stderr, "Connection to SQLITE established!.\n" );
}
rc = sqlite3_prepare_v2(db, "SELECT temp FROM envirment ORDER BY ID DESC LIMIT 1", -1, &res, 0);
if (rc != SQLITE_OK) {
fprintf(stderr, "Failed to fetch data: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
rc = sqlite3_step(res);
if (rc == SQLITE_ROW) {
fprintf(stdout, "Temperature value ==== : %s\n", sqlite3_column_double(res, 0));
tempData->temp = sqlite3_column_double(res, 0);
fprintf(stdout, "Temp value from temperature_data_t: %s\n", tempData->temp);
}
sqlite3_finalize(res);
sqlite3_close(db);
}
return ret;
}
Данные выбираются из базы данных sqlite.Я проверяю, работает ли функция так, как задумано, поэтому я отображаю значение до и после назначения.Выходные данные из присвоения структуры tempData->temp = sqlite3_column_double(res, 0);
, отображаемые в следующей строке fprintf(stdout, " Temp value from temperature_data_t: %s\n", tempData->temp);
, равны null
.Ниже приводится вывод функции:
Connection to SQLITE established!.
Temperature value ==== : 29.1
Temp value from temperature_data_t: (null)
Как правильно назначить выборку для tempData->temp
?