Qt连接Access和SQL Server数据库

来源:互联网 发布:人工智能英文音标 编辑:程序博客网 时间:2024/06/02 14:13

1.Qt连接Access数据库方法

1)设置数据库连接信息

[cpp] view plaincopy
  1. <span style="font-size:12px;">QString sDbNm = "F:/data.accdb";//数据库文件  
  2. db = QSqlDatabase::addDatabase("QODBC");//设置数据库驱动  
  3. QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; FIL={MS Access};DBQ=%1;").arg(sDbNm);//连接字符串  
  4. db.setDatabaseName(dsn);//设置连接字符串  
  5. db.setUserName("");//设置登陆数据库的用户名  
  6. db.setPassword("111");//设置密码</span>  


2)操作数据库数据

[cpp] view plaincopy
  1. <span style="font-size:12px;"> QStringList tables;  
  2.  QString tabName,sqlString;  
  3.  tables = db.tables(QSql::Tables);//获取表信息  
  4.   
  5.  for (int i = 0; i < tables.size(); ++i)</span>  
[cpp] view plaincopy
  1. <span style="font-size:12px;">{  
  2.      tabName = tables.at(i);//获取第i个表信息  
  3.      qDebug()<<tabName;  
  4.      sqlString = "select * from " + tabName;  
  5.      QSqlQuery q(sqlString);            //QSqlQuery q("select * from product");  
  6.      QSqlRecord rec = q.record();  
  7.      int fieldCount = rec.count();  
  8.      qDebug() << "Number of columns: " << fieldCount;  
  9.      int i;  
  10.             QString fieldName;  
  11.             for(i=0;i<fieldCount;i++){  
  12.                 fieldName = rec.fieldName(i);  
  13.                 QByteArray ba = fieldName.toLatin1();  
  14.                 char *tmp = ba.data();  
  15.                 qDebug() <<tr("字段名:") << fieldName <<"\t";  
  16.             }              
  17.             cout<<endl;  
  18.             while(q.next()){  
  19.                 for(int i=0;i<fieldCount;i++){  
  20.                     QString strTmp = q.value(i).toString();  
  21.                     QByteArray a = strTmp.toLatin1();  
  22.                     char *data = a.data();  
  23.                     qDebug()<<tr("姓名:")<<strTmp;  
  24.                     qDebug()<<"\t";  
  25.                 }  
  26.                 cout<<endl;  
  27.       }  
  28.  }</span>  

2.Qt连接SQL Server数据库方法

 

[cpp] view plaincopy
  1.   

#define DB_SERVER (QProcessEnvironment::systemEnvironment().value("COMPUTERNAME") + "\\SQLEXPRESS")

[html] view plaincopy
  1. db = QSqlDatabase::addDatabase("QODBC");  
  2.     QString dsn = QString("DRIVER={SQL SERVER}")  
  3.                   + ";SERVER=" + DB_SERVER  
  4.                   + ";UID=" + ""  
  5.                   + ";PWD=" + ""  
  6.                   + ";DATABASE=student";  
  7.     //如果已经设定DSN,可以写为QString::fromLocal8Bit("SQLSERVER_DSN")  
  8.     qDebug() << "name = " << DB_SERVER << "\n";  
  9.     db.setDatabaseName(dsn);  
  10.     //即使dsn中已经设置了UID和PASSWD,仍然需要执行setUserName和setPassword的步骤  
  11.     db.setUserName("");  
  12.     db.setPassword("");  
  13.     bool r = db.open();//打开数据库  
[html] view plaincopy
  1.    
[html] view plaincopy
  1. 数据库操作通ACCESS数据库操作。
0 0