您的位置:首页 > 编程语言 > Qt开发

Qt连接access、Oracle、MySql、SqlServer数据库

2012-12-15 22:02 615 查看
1.连接access数据库

[cpp] view plaincopyprint?

/*连接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数据库

[cpp] view plaincopyprint?

3.连接oracle数据库

[cpp] view plaincopyprint?

/**连接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数据库

[cpp] view plaincopyprint?

/**连接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);

本文来源:http://blog.csdn.net/mingxia_sui/article/details/7724153
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle MySql access