1.连接access数据库
/*连接access数据库*/ QString sDbNm = "accessDb.mdb"; void MainDialog::connectAccess() { db = QSqlDatabase::addDatabase("QODBC"); QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb)}; FIL={MS Access};DBQ=%1;").arg(sDbNm); db.setDatabaseName(dsn); //db.setUserName(UserName); //db.setPassword(Password); if (db.open()) { QMessageBox::information(this, tr("提示"), tr("数据库连接成功!"), tr("确定")); } else { QMessageBox::information(this, tr("提示"), tr("数据库连接失败!"), tr("确定")); qDebug() <<"error_Access:\n" << db.lastError().text(); } db.close(); }
2.连接SQLServer2000数据库
/**连接sql server数据库 *数据库名:abc *表名:SQL_2000 *用户名:sa *密码:123 *端口号:(默认)1433 */ void MainDialog::connectSql(QString sIp, int iPort, QString sDbNm, QString sUserNm, QString sPwd) { db = QSqlDatabase::addDatabase("QODBC"); QString dsn = QString("Driver={sql server};SERVER=%1;PORT=%2;DATABASE=%3;UID=%4;PWD=%5;") .arg(sIp) .arg(iPort) .arg(sDbNm) .arg(sUserNm) .arg(sPwd); db.setDatabaseName(dsn); /*连接sql 2000*/ bool r = db.open(); if (r) { qDebug() << "SQL Server 2000 Connect OK!"; /* 计算当前表中id*/ QSqlQuery query1 = QSqlQuery(db); query1.clear(); query1.prepare("select top 1 ID from SQL_2000 order by ID desc"); bool a = query1.exec(); int id; if (a) { while(query1.next()) { id = query1.value(0).toInt(); } } /*插入数据*/ QSqlQuery query2 = QSqlQuery(db); QString sq1 = QObject::tr("insert into SQL_2000(Id,Ip,Port,UserName,Password,DbType,DbName)" "values (?, ?, ?, ?, ?, ?, ?)"); bool b = query2.prepare(sq1); if(b) { qDebug() << "insert data success!"; } query2.bindValue(0, id+1); query2.bindValue(1, sIp); query2.bindValue(2, iPort); query2.bindValue(3, sUserNm); query2.bindValue(4, sPwd); query2.bindValue(5, sDbType); query2.bindValue(6, sDbNm); /*查询数据*/ QSqlQuery query3 = QSqlQuery(db); query3.prepare("select * from SQL_2000 where Id=1"); bool c = query3.exec(); if (c) { qDebug() << "select data success!"; while(query3.next()) { qDebug() << query3.value(0); qDebug() << query3.value(1); qDebug() << query3.value(2).toInt(); } } else { qDebug() << query3.lastError().text().data(); } /*删除数据*/ QSqlQuery query4 = QSqlQuery(db); query4.prepare("delete from SQL_2000 where Id=1"); bool d = query4.exec(); if (d) { qDebug() << "delete data success!"; } else { qDebug() << query3.lastError().text().data(); } } else { QMessageBox::information(this, tr("提示"), tr("Sql Server数据库连接失败!"), tr("确定")); qDebug() <<"error_SqlServer:\n" << db.lastError().text(); } db.close(); }
3.连接oracle数据库
/**连接Oracle数据库 *数据库名:abc *表名:my_oracle *用户名:system *密码:123 *端口号:(默认)1521 */ void MainDialog::connectOracle(QString sIp, int iPort, QString sDbNm, QString sUserNm, QString sPwd) { db = QSqlDatabase::addDatabase("QOCI"); db.setHostName(sIp); db.setPort(iPort); db.setDatabaseName(sDbNm); db.setUserName(sUserNm); db.setPassword(sPwd); if (db.open()) { QMessageBox::information(this, tr("提示"), tr("Oracle数据库连接成功!"), tr("确定")); } else { QMessageBox::information(this, tr("提示"), tr("Oracle数据库连接失败!"), tr("确定")); qDebug() <<"error_Oracle:\n" << db.lastError().text(); } }4.连接MySql数据库
/**连接MySql数据库 *数据库名:abcn *表名:my_sql *用户名:root *密码:123 *端口号:3306 */ void MainDialog::connectMySQL(QString sIp, int iPort, QString sDbNm, QString sUserNm, QString sPwd) { db = QSqlDatabase::addDatabase("QMYSQL"); // 使用mysql数据库驱动 db.setHostName(sIp); // IP地址 db.setPort(iPort); // 端口号 db.setDatabaseName(sDbNm); // 数据库名称 db.setUserName(sUserNm); // 用户名 db.setPassword(sPwd); // 密码 bool ok = db.open(); // 尝试连接数据库 if(ok) { qDebug() << "connect MySql success!"; } else // 打开数据库失败 { QMessageBox::information(this, tr("提示"), tr("MySql数据库连接失败!"), tr("确定")); qDebug() <<"error_MySql:\n" << db.lastError().text(); } }
对写入ip的控件设置:
//设置ip号
QRegExp rx1("^((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)$");
QValidator* inputValueValidator = new QRegExpValidator(rx1, this);
ui->ipLine->setValidator(inputValueValidator);
ok!以上是Qt连接几个数据库的代码(本机访问与远程访问代码是相同的。)
后边的博客我将慢慢归纳Qt远程连接几个数据库遇到的问题及解决方案!
。。。。。。