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();
- }
注意:QString dsn = QString("DRIVER={Microsoft Access Driver(*.mdb)}; FIL={MS Access};DBQ=%1;").arg(sDbNm);
由于现在access数据库的后缀名有两种格式,老版的.mdb和2007版的.accdb。
为了确保两种都可以连接,则dsn中的DRIVER要改成这样:
DRIVER={Microsoft Access Driver (*.mdb, *.accdb);
(数据库文件路径(sDbNm)一定要写绝对路径,否则就会报错说:
"[Microsoft][ODBC Microsoft Access Driver] 文件名无效。 QODBC3:Unable to connect"。)
2.连接SQLServer2000数据库
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);