客户要求把文件里的内容导入进数据库,当时说的是把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("打开文件错误")); }