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 }
ODBC链接SQLServer数据库
时间: 2024-08-07 16:40:18