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

浙公网安备 33010602011771号