我完全不满意更新QSLite表。 这是我的代码:
QSqlQuery tSqlQuery("SELECT load_extension(\'libspatialite-4.dll\')", *sdb);
QSqlQuery addColumnLat;
addColumnLat.prepare("ALTER TABLE roads_nodes ADD COLUMN lat REAL");
QSqlQuery addColumnLon;
addColumnLon.prepare("ALTER TABLE roads_nodes ADD COLUMN lon REAL");
QSqlQuery updateLatLon;
updateLatLon.prepare("UPDATE roads_nodes SET lat=ST_Y(roads_nodes.geometry), lon=ST_X(roads_nodes.geometry)");
if(addColumnLat.exec())
if(addColumnLon.exec())
if(!updateLatLon.exec())
{
qDebug() << updateLatLon.lastQuery();
qDebug() << updateLatLon.lastError().databaseText();
qDebug() << updateLatLon.lastError().driverText();
}
else
qDebug() << addColumnLat.lastError().text();
这是输出:
"UPDATE roads_nodes SET lat=ST_Y(roads_nodes.geometry), lon=ST_X(roads_nodes.geometry)"
"No query"
"Unable to fetch row"
扩展正确加载,实际上我可以用ST_X(geometry_column)和ST_Y(geometry_column)执行SELECT语句
前两个ALTER语句正确执行,并创建新列。
WIDW?