1 sqlite3操作编程
问题1 驱动无法加载
QSqlDatabase: QSQLITE driver not loaded
解决办法将Qt自带安装目录下的sql文件拷贝到可执行文件目录下。
2 连接数据库
//1.检查数据库的连接是否存在
if (QSqlDatabase::contains("qt_sql_default_connection")){
db = QSqlDatabase::database("qt_sql_default_connection");
}else{
db = QSqlDatabase::addDatabase("QSQLITE");
}
db.setDatabaseName(file_db);
if (!db.open()){
QMessageBox::about(this, "database", "database open failed");
}
if (db.open())
{
qDebug() << file_db << " opened ok.";
}
3 查询数据库
//2 查询数据库,获取所有的数据信息.
//各种操作
QSqlQuery query(db);
query.prepare("SELECT * FROM nudt_dev");
if (!query.exec())
qDebug() << query.lastError();
else
{
QSqlRecord rec = query.record();
int cols = rec.count();
/* for (int c = 0; c<cols; c++)
qDebug() << QString("Column %1: %2").arg(c).arg(rec.fieldName(c));*/
//查询结果填充到tableWidget中.
while (query.next())
{
int id = query.value(0).toInt();
QString name = query.value(1).toString();
int cb_type_index = query.value(2).toInt();
QString combat_radius = query.value(3).toString();
QString speed = query.value(4).toString();
int cb_scout_cap_index = query.value(5).toInt();
QString armored_car_low_loss = query.value(6).toString(); //轻损
QString armored_car_mid_loss = query.value(7).toString();//中损
QString armored_car_high_loss = query.value(8).toString();//重损
QString truck_low_loss = query.value(9).toString();
QString truck_mid_loss = query.value(10).toString();
QString truck_high_loss = query.value(11).toString();
QString build_low_loss = query.value(12).toString();
QString build_mid_loss = query.value(13).toString();
QString build_high_loss = query.value(14).toString();
int cb_build_struct_index = query.value(15).toInt();
int cb_build_materials_index = query.value(16).toInt();
int cb_build_thickness_index = query.value(17).toInt();
//表填充.
init_table_widget(name, cb_type_index, combat_radius, speed, cb_scout_cap_index, armored_car_low_loss,
armored_car_mid_loss, armored_car_high_loss, truck_low_loss, truck_mid_loss, truck_high_loss,
build_low_loss, build_mid_loss, build_high_loss, cb_build_struct_index, cb_build_materials_index, cb_build_thickness_index);
}
}
4 数据库插入
QString sql = "insert into nudt_dev values (";
sql += "NULL";
sql += ",";
sql += "'" + name + "',";
sql += QString::number(cb_type->currentIndex()) + ",";
sql += combat_radius + ",";
sql += speed + ",";
sql += QString::number(cb_scout_cap->currentIndex()) + ",";
sql += armored_car_low_loss + ",";
sql += armored_car_mid_loss + ",";
sql += armored_car_high_loss + ",";
sql += truck_low_loss + ",";
sql += truck_mid_loss + ",";
sql += truck_high_loss + ",";
sql += build_low_loss + ",";
sql += build_mid_loss + ",";
sql += build_high_loss + ",";
sql += QString::number(cb_build_struct->currentIndex()) + ",";
sql += QString::number(cb_build_materials->currentIndex()) + ",";
sql += QString::number(cb_build_thickness->currentIndex()) ;
sql += ")";
qDebug() << "sql:" << sql;
query.prepare(sql);
if (!query.exec())
{
qDebug() << query.lastError();
}
else
{
qDebug() << "insert ok.";
}