27.Qt操作sqlite3数据库

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.";
		}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangshui516

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值