基于vs和qt实现把文件里的内容导入进入数据库

发布时间 2023-04-04 10:28:01作者: 小范同学的博客

客户要求把文件里的内容导入进数据库,当时说的是把excel里的内容导入数据库,但是为了赶时间,就只能麻烦客户把excel里的内容导出到txt里,然后再导入数据库中,代码简单,希望以后能够进步吧。

后面找个时间,把excel里的内容导入数据库的内容实现。

以下是主要代码

axtek_into_data::axtek_into_data(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);
	connect(ui.dr, SIGNAL(clicked()), this, SLOT(dr_Clicked_slots()));
	
	
}


void axtek_into_data::dr_Clicked_slots() {



	db.setHostName("127.0.0.1");
	db.setPort(3306);
	db.setDatabaseName("test");
	db.setUserName("root");
	db.setPassword("axtek9988");
	bool ok = db.open();
	if (ok) {
		//QMessageBox::information(this, "infor", QString::fromLocal8Bit("数据库打开成功"));

	}
	else {
		QMessageBox::information(this, "infor", QString::fromLocal8Bit("打开数据库失败"));
		qDebug() << "error open database because" << db.lastError().text();
	}
	QString fileName = QFileDialog::getOpenFileName(this, tr("选择文件"), "", tr("TXT(*.txt)")); //选择路径
	QString lineStr;
	QString new_contents;
	QStringList  strs;
	QStringList strs2;
	int count=0;
	if (fileName.isEmpty())     //如果未选择文件便确认,即返回
		return;
	QFile file(fileName);
	if (file.open(QIODevice::ReadOnly | QIODevice::Text))
	{
		while (!file.atEnd())
		{
			lineStr = file.readLine();
			new_contents = lineStr.replace('\t', ',');
			strs = new_contents.split('\n', QString::SkipEmptyParts);
			foreach(QString s, strs)
			{
				QString n = s;
				strs2 = n.split(',');
				count ++;
				QString	temp = QString("replace into ceshi(SMT_name, wuliao_bianhao_old, wuliao_bianhao_new) values('%1', '%2', '%3')").arg(strs2[0]).arg(strs2[1]).arg(strs2[2]);
				QSqlQuery query;
				query.exec(temp);
				;
			}
		}

		ui.listWidget->addItem(QString("文件里的数据导入成功"));
		ui.listWidget->addItem(QString("导入了%1个数据").arg(count));

	}
	else
	{
		QMessageBox::information(this, "infor", QString::fromLocal8Bit("打开文件错误"));

	}