开始---控制面板----管理工具---服务-------sql server服务---启动
B、如是远程连接,检查是否已设置好远程连接。
1、开始-->程序->sql配置工具->sqlsever 外围应用配置器
2、点击服务和连接的的外围应用配置器
3、选择远程连接
4、选择本地及远程连接
5、选择反使用TCP/IP
6、单击确定
不明白啊 = =!
1. 确定qt编译时已经编译了qtsql。(默认的qt5,都已经支持了,如下目录:c:\qt\qt5.3.0\5.3\msvc2013_opengl\plugins\sqldrivers里有相应的驱动动态库
也可以通过如下代码测试qt5是否支持sqlserver
#include
#include
#include
#include
int main(int argc, char* argv[])
{
qapplication app(argc, argv);
qdebug() < "available="" drivers:";="" qstringlist="" drivers="qsqldatabase::drivers();" foreach(qstring="" driver,="" drivers)="" 列出qt5所有支持的数据库类型="" qdebug()="">< "\t"="">< driver;="" qsqldatabase="" db="qsqldatabase::adddatabase(" qodbc");"="" qdebug()="">< "odbc="" driver="" valid?"="">< db.isvalid();="" true为支持="" }="" 输出结果如下:="" "qsqlite""qmysql""qmysql3""qodbc""qodbc3""qpsql""qpsql7"odbc="" driver="" valid?="" true="" 2.="" 若是没有编译,可以手动编译了qt的odbc插件。="" 可以通过编译qt的时候加上="" configure="" -plugin-sql-odbc来保证,也可以单独编译qt安装包里的~\src\plugins\sqldrivers\odbcqmake="" -t="" vclib="" odbc.pronmake="" (注:windows中为mingw32-make)编译后,在~\plugins\sqldrivers\下应该有qsqlodbcd4.dll(debug)或qsqlodbc4.dll="" 此时,可以用下面的程序,测试一下你的qt目前支持哪些数据库访问。="" 二、连接sqlserver="" 要注意的就是连接数据库时使用的数据库名,sqlserver和sqlite、mysql等是不同的,并不是直接写入数据库名称。="" 而是dsn名。="" 如果你已经设置好了dsn,可以直接输入dsn名。="" 如果没有,可以采用dsn连接字符串直接连接odbc数据库。="" 1、直接设定dsn的字符串连接数据库,很简单。="" *="" *函数介绍:创建数据库连接="" *输入参数:="" *返回值:无="" */="" bool="" dataaccess::createconnection()="" {="" qstringlist="" drivers="qsqldatabase::drivers();" foreach(qstring="" driver,="" drivers)="" qdebug()="">< "\t"="">< driver;="" qsqldatabase="" db="qsqldatabase::adddatabase(" qodbc");"="" qdebug()="">< "odbc="" driver="" valid?"="">< db.isvalid();="" 注意,对于express版本数据库,="" 一定要加\\sqlexpress这种后缀="" server="58.67.161.109\\sqlexpress" qstring="" dsn="driver={sql server};server=58.67.161.109;database=rdbs;uid=rdbs_user;pwd=rdbs_user_7010387;" ;="" db.sethostname("58.67.161.109");="" 数据库服务器,我这里不需要="" 即使dsn中已经设置了uid和passwd,仍然需要执行setusername和setpassword的步骤="" 还要注意这里的用户名要有创建表的权限,不然创建下面的表student会不成功。="" db.setdatabasename(dsn);="" 数据库名="" db.setusername("rdbs_user");//登录名,我再dsn里设置uid和pwd后,就不需要设置了="" db.setpassword("rdbs_user_7010387");//密码,我再dsn里设置uid和pwd后,就不需要设置了="" if(!db.open="" ())="" {="" qsqlerror="" error="db.lasterror();" qmessagebox::warning="" (0,="" "warning",="" qstring("failed="" to="" open="" database!error:%1").arg(error.text()));="" returnfalse;="" }="" returntrue;="" }="" 注意:连接数据库时,="" 一直连不上报错:="" connectionopen="" (invalid="" instance())="" ,="" 连接无效,="" 结果发现微软对express版本数据库是有限制的,="" 在server字段添加\\sqlexpress这样后缀,="" 连接ok。="" 2、手动设置odbc数据源,然后制定dsn="" 控制面板-="">系统和安全->管理工具->数据源(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"
2、oledb连接字符串
//适合的数据库类型 连接方式
access "provider=microsoft.jet.oledb.4.0;data source=your_database_path;user id=admin;password=pass;"
oracle "provider=oraoledb.oracle;data source=dbname;user id=admin;password=pass;"
ms sql server "provider=sqloledb;data source=machinename;initial catalog=dbname;userid=sa;password=pass;"
ms text "provider=microsof.jet.oledb.4.0;data source=your_path;extended properties'text;fmt=delimited'"