1.连接access数据库

 

  1. /*连接access数据库*/  
  2. QString sDbNm = "accessDb.mdb";  
  3. void MainDialog::connectAccess()  
  4. {  
  5.     db = QSqlDatabase::addDatabase("QODBC");  
  6.     QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb)}; FIL={MS Access};DBQ=%1;").arg(sDbNm);  
  7.     db.setDatabaseName(dsn);  
  8.     //db.setUserName(UserName);  
  9.     //db.setPassword(Password);  
  10.     if (db.open())  
  11.     {  
  12.         QMessageBox::information(this, tr("提示"), tr("数据库连接成功!"), tr("确定"));  
  13.     }  
  14.     else  
  15.     {  
  16.         QMessageBox::information(this, tr("提示"), tr("数据库连接失败!"), tr("确定"));  
  17.         qDebug() <<"error_Access:\n" << db.lastError().text();  
  18.     }  
  19.     db.close();  
  20. }  

注意: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数据库

  1. /**连接Oracle数据库 
  2.   *数据库名:abc 
  3.   *表名:my_oracle 
  4.   *用户名:system 
  5.   *密码:123 
  6.   *端口号:(默认)1521 
  7. */  
  8. void MainDialog::connectOracle(QString sIp, int iPort,  QString sDbNm, QString sUserNm, QString sPwd)  
  9. {  
  10.     db = QSqlDatabase::addDatabase("QOCI");  
  11.     db.setHostName(sIp);  
  12.     db.setPort(iPort);  
  13.     db.setDatabaseName(sDbNm);  
  14.     db.setUserName(sUserNm);  
  15.     db.setPassword(sPwd);  
  16.     if (db.open())  
  17.     {  
  18.         QMessageBox::information(this, tr("提示"), tr("Oracle数据库连接成功!"), tr("确定"));  
  19.     }  
  20.     else  
  21.     {  
  22.         QMessageBox::information(this, tr("提示"), tr("Oracle数据库连接失败!"), tr("确定"));  
  23.         qDebug() <<"error_Oracle:\n" << db.lastError().text();  
  24.     }  
  25. }  

4.连接MySql数据库

 

 

  1. /**连接MySql数据库 
  2.   *数据库名:abcn 
  3.   *表名:my_sql 
  4.   *用户名:root 
  5.   *密码:123 
  6.   *端口号:3306 
  7. */  
  8. void MainDialog::connectMySQL(QString sIp, int iPort,  QString sDbNm, QString sUserNm, QString sPwd)  
  9. {  
  10.     db = QSqlDatabase::addDatabase("QMYSQL"); // 使用mysql数据库驱动  
  11.     db.setHostName(sIp);        // IP地址  
  12.     db.setPort(iPort);          // 端口号  
  13.     db.setDatabaseName(sDbNm);  // 数据库名称  
  14.     db.setUserName(sUserNm);    // 用户名  
  15.     db.setPassword(sPwd);       // 密码  
  16.     bool ok = db.open();        // 尝试连接数据库  
  17.     if(ok)  
  18.     {  
  19.         qDebug() << "connect MySql success!";  
  20.         
  21.     }  
  22.     else // 打开数据库失败  
  23.     {  
  24.   
  25.         QMessageBox::information(this, tr("提示"), tr("MySql数据库连接失败!"), tr("确定"));  
  26.         qDebug() <<"error_MySql:\n" << db.lastError().text();  
  27.     }  
  28.   
  29. }  


对写入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);