前提条件:Qt Creater5.4.1 、SQLServer2005 express 、 win7 32位sql
1.先搞数据源,(至于为何,由于网上这么说)数据库
先在开始搜索“ODBC”,找到ODBC数据源,而后点进去express
而后点添加,找到Sql Server,点完成服务器
输入如下内容:服务器个人是本机,而后下一步网络
由于我没有设置Sql Server验证方式直接使用Windows验证,而后下一步tcp
这里有个更改数据库,改为本身想用的就好了。而后点完成就好了,(在这里改默认数据库)测试
以后有个测试,只要是填对了应该没问题spa
2.找到Sql Server 配置管理器找到网络配置,而后点开那个什么协议,找到右边的tcpip,而后启动它3d
右键属性设置tcp端口为1433,只要动态端口我也没管它,后来自动变成37178了(至于这一步有没有必要我不知道,由于这个步骤是在前面作的,若是要验证其必要性能够先不设置,你看看能不能成功,若是能成功说明没有必要设置这一步)code
3.qt代码:建立Qt empty qmake project项目,而后添加main.cpp文件,pro文件中添加 QT += sql
还有一事要将就是前面数据源默认数据库我改了,你本身新建一个测试数据库,而后在ODBC数据源配置中改成新建的数据库就好了
#include <QSql> #include <QDebug> #include <QSqlError> #include <QSqlDatabase> #include <QSqlQuery> bool OpenDatabase() { QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); //数据库驱动类型为SQL Server qDebug()<<"ODBC driver?"<<db.isValid(); QString dsn = QString::fromLocal8Bit("testdsn"); //数据源名称 db.setHostName("localhost"); //选择本地主机,127.0.1.1 db.setDatabaseName(dsn); //设置数据源名称 //一开始我屏蔽了下边两行 db.setUserName("sa"); //登陆用户 db.setPassword("root"); //密码 if(!db.open()) //打开数据库 { qDebug()<<db.lastError().text(); qDebug()<<"i am"; return false; //打开失败 } else { qDebug()<<"database open success!"; QSqlQuery query(db); //查询Card表并输出,测试可否正常操做数据库 query.exec("CREATE TABLE Persons(Id_P int,LastName varchar(255),dd int)"); query.exec("insert into Persons values(1,'heh',2)"); //query.exec("Create database data0723"); query.exec("delete from Persons where dd=2"); query.exec("select *from Persons"); while(query.next()) { qDebug()<<query.value(0).toInt() <<query.value(1).toString()<<query.value(2).toInt(); } }return true; } int main(int argc, char *argv[]) { if(!OpenDatabase()) return 1; }