首页 > 代码库 > ODBC链接SQLServer数据库

ODBC链接SQLServer数据库

 1 #include <QtSql/QSqlDatabase>
 2 #include <QMessageBox>
 3 #include <QSqlError>
 4 #include <QSqlQuery>
 5 #include <QDebug>
 6 
 7 
 8 int main(int argc,char* argv[])
 9 {
10     
11     // 方法一 :通过DSN建立连接。DSN即数据源名称。
12     //下面例子sql server上的dbHomework数据库上。 程序中指定此连接的名称为dbTemp,可以随便写。
13     QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "dbHomework");
14     //指定数据源名称为:MSSQLServer
15     QString dsn = QString::fromLocal8Bit("DRIVER={SQL SERVER};SERVER=Sanlary;DATABASE=Homework");
16     db.setDatabaseName(dsn);
17     if(!db.open()) {
18         QMessageBox::about(0, QObject::tr("Database Error"),db.lastError().text());
19         //如果dsn名设错,将会在db.open()时出现“[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified QODBC3: Unable to connect”
20         //“[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 QODBC3: Unable to connect”错误。
21     }
22     else
23     {
24         QSqlQuery query(db);    //以下执行相关 sql语句
25         query.exec("if exists fuck drop fuck");
26         query.exec("create table fuck(id int primary key,name varchar(20))");
27         query.exec("insert into fuck values(2,‘xiafang‘)");
28         query.exec("insert into fuck values(7,‘wanghua‘)");
29         query.exec("insert into fuck values(3,‘aisq‘)");
30         query.exec("insert into fuck values(4,‘fucan‘)");
31         query.exec("select id,name from fuck where id>=2");
32         while(query.next()){
33             int id=query.value(0).toInt();  //query.value(0)中0表示第一个字段的值,即是id的值
34             QString name=query.value(1).toString().trimmed();
35             qDebug()<<"id="<<id<<"  "<<"name="<<name<<endl;
36         }
37     }
38 
39     /*
40     //*  方法二: 通过主机名和用户名密码来建立连接。
41     //下面例子连接到 192.168.21.106 上的sql server名为Homework的数据库上。 程序中指定此连接的名称为dbTemp,可以随便写。
42     QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "Homework");
43     //指定服务器主机的IP地址,即数据库在哪个电脑上。可以是自己电脑的IP地址。
44     db.setHostName("192.168.21.106");
45     //ODBC连接SQL Server驱动的格式。"Driver={sql server};server=servername;database=dbname;uid=sa;pwd=pass;"
46     QString dsn = QString::fromLocal8Bit("DRIVER={SQL SERVER};SERVER=192.168.21.106;DATABASE=Homework");
47     //可以自行百度如果在控制面板中启动ODBC数据远来设置DSN数据源名称
48     //如果已经设定DSN,可以写为QString::fromLocal8Bit("DSN数据源名称")
49     db.setDatabaseName(dsn);
50     //QString::fromLocal8Bit("MSSQLServer");
51     //即使dsn中已经设置了UID和PASSWD,仍然需要执行setUserName和setPassword的步骤
52     //还要注意这里的用户名要有创建表的权限,不然创建下面的表student会不成功。
53     db.setUserName("Yanxueke");
54     db.setPassword("zhanghan223");
55     if(!db.open()) {
56         QMessageBox::about(0, QObject::tr("Database Error"),db.lastError().text());
57     }
58     //*//*
59     else
60     {
61         QSqlQuery query(db);    //以下执行相关 sql语句
62         query.exec("if exists fuck drop fuck");
63         query.exec("create table student(id int primary key,name varchar(20))");
64         query.exec("insert into student values(2,‘xiafang‘)");
65         query.exec("insert into student values(7,‘wanghua‘)");
66         query.exec("insert into student values(3,‘aisq‘)");
67         query.exec("insert into student values(4,‘fucan‘)");
68         query.exec("select id,name from student where id>=2");
69         while(query.next()){
70             int id=query.value(0).toInt();  //query.value(0)中0表示第一个字段的值,即是id的值
71             QString name=query.value(1).toString().trimmed();
72             qDebug()<<"id="<<id<<"  "<<"name="<<name<<endl;
73         }
74     }
75     db.close();*/
76 }