Qt连接sql server数据库遇到的问题
QSqlDatabase QSqlDatabase::addDatabase(const QString & type, const QString & connectionName = QLatin1String( defaultConnection ))
QDB2 | IBM Db |
QIBASE | Borland InterBase |
QMYSQL | MYSQL |
QOCI | 甲骨文公司 |
QODBC | ODBC(包括微软公司的Server服务器) |
QPSQL | PostgreSQL的7.3版以及更高版 |
QSQLITE | QLite第三版 |
QSQLITE2 | QLIte2第二版 |
QTDS | sybase自适应服务器 |
- DNS字符串
QString dsn = "DRIVER={SQL SERVER};SERVER=58.67.161.109;DATABASE=RDBS;UID=RDBS_USER;PWD=RDBS_USER_7010387;";
//还要注意这里的用户名要有创建表的权限,不然创建下面的表student会不成功。
db.setDatabaseName(dsn); //数据库名 db.setUserName("RDBS_USER");//登录名,我再dsn里设置UID和PWD后,就不需要设置了
if(!db.open ())
{
QSqlError error = db.lastError();
return false;
}
- 手动设置ODBC数据源
控制面板->系统和安全->管理工具->数据源(ODBC)
代码:
QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("testdsn");
db.setUserName("sa");
db.setPassword("scada");
三、下面是ODBC和OLEDB的连接字符串写法:
1、ODBC连接字符串
//适合数据库类型 连接方式
access
"Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;pwd=pass;"
dBase
"Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"
oracle
"Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;"
MSSQL server
"Driver={sql server};server=servername;database=dbname;uid=sa;pwd=pass;"
MS text
"Driver={microsoft text driver(*.txt; *.csv)};dbq=-----;extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"
Visual Foxpro
"Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No;"
MySQL
"Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;option=16386;"
SQLite
"Driver={SQLite3 ODBC Driver};Database=D:\SQLite\*.db"
PostgreSQL
"Driver={PostgreSQL ANSI};server=127.0.0.1;uid=admin;pwd=pass;database=databaseName"