首页 > 代码库 > 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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。