1、远程数据库

设远程数据库的ip地址为192.168.0.1,其中testdb数据库中有student表,student表包含两列:name和age。name为char类型,长度为10;age为int类型,长度为4。

2、源代码

HENV   hEnv = NULL; // Env Handle from SQLAllocEnv()

HDBC   hDBC = NULL; // Connection handle

RETCODE retcode;

// Allocate memory for ODBC Environment handle

SQLAllocEnv (&hEnv);

// Allocate memory for the connection handle

SQLAllocConnect (hEnv, &hDBC);

// Connect to the data source "test" using userid and password.

SQLCHAR szConnect[] = "DRIVER={SQL Server};SERVER=192.168.0.1;UID=sa;PWD=Goncely;DATABASE=testdb";

SQLCHAR szOutConn[1024];

SQLSMALLINT n(0);

retcode = SQLDriverConnect(hDBC, m_hWnd, szConnect, strlen((char*)szConnect),

szOutConn, 1024, &n, SQL_DRIVER_NOPROMPT);

if (retcode == SQL_SUCCESS || SQL_SUCCESS_WITH_INFO)

{

TRACE("connect to sql server success/n");

HSTMT  hStmt = NULL;// Statement handle

// Allocate memory for the statement handle

retcode = SQLAllocStmt (hDBC, &hStmt);

UCHAR  szSqlStr[128]= "SELECT * from student" ;

// Prepare the SQL statement by assigning it to the statement handle

retcode = SQLPrepare (hStmt, szSqlStr, sizeof (szSqlStr));

// Execute the SQL statement handle

retcode = SQLExecute (hStmt);

SQLSMALLINT ColumnCount(0);

retcode = SQLNumResultCols(hStmt, &ColumnCount);

TRACE("total %d cols in db./n", ColumnCount);

char name[11];

int age;

SQLINTEGER StrLen_or_Ind;

retcode = SQLBindCol(hStmt, 1, SQL_C_CHAR, name, 24, &StrLen_or_Ind);

retcode = SQLBindCol(hStmt, 2, SQL_C_SLONG, &age, 0, &StrLen_or_Ind);

do

{

retcode = SQLFetch(hStmt);

TRACE("name: %s, age: %d./n", name, age);

}

while(retcode == SQL_SUCCESS);

// Free the allocated statement handle

SQLFreeStmt (hStmt, SQL_DROP);

// Disconnect from datasource

SQLDisconnect(hDBC);

}

else if(/*retcode == SQL_SUCCESS_WITH_INFO ||*/ retcode == SQL_ERROR)

{

TRACE("ai/n");

SQLCHAR Sqlstate[6], MessageText[1024];

SQLINTEGER NativeError;

SQLSMALLINT TextLength;

SQLGetDiagRec(SQL_HANDLE_DBC, hDBC, 1, Sqlstate, &NativeError,

MessageText, 1024, &TextLength);

TRACE("%s/n", MessageText);

}

else

{

TRACE("failed for others/n");

}

// Free the allocated connection handle

SQLFreeConnect(hDBC);

// Free the allocated ODBC environment handle

SQLFreeEnv(hEnv);

3、代码分析

代码以sa账号建立到192.168.0.1服务器中testdb数据库的连接。远程连接的关键函数为SQLDriverConnect,函数的最后一个参数使用了SQL_DRIVER_NOPROMPT,如果将参数改为SQL_DRIVER_PROMPT,则每当此函数被调用后,会弹出一个数据库访问的配置对话框。此对话框的初始信息由szConnect初始化,用户进行更改后,最后的信息会返回到szOutConn,并以此为参数建立远程连接。对于SQL_DRIVER_NOPROMPT标记,函数直接将szConnect的内容拷贝到szOutConn。

成功建立连接后,上述代码的中间部分顺序读取student表中的内容,并trace输出。最后几行代码用于释放资源。

vc访问远程mysql_vc实现对远程SQL Server数据库的访问相关推荐

  1. 1433端口无法连接(sql server 数据库无法访问问题)解决思路

    1433端口无法连接(sql server 数据库无法访问问题)解决思路 参考文章: (1)1433端口无法连接(sql server 数据库无法访问问题)解决思路 (2)https://www.cn ...

  2. 访问MS Access 系统表 MSysObjects ,在SQL SERVER 2005中访问

    首先设置MS Access,给予访问MSysObjects 的权限 1. Open Microsoft Access 2. From the Tools menu, select the Option ...

  3. SQL Server数据库单用户模式设置

    将数据库设置为单用户模式 单用户模式是指只有一个用户可以访问某个资源的状态. SQL Server数据库单用户模式设置 在进行一些数据库操作时,需要先把数据库设置为单用户模式,操作完成后再改回普通模式 ...

  4. 利用花生壳实现B电脑远程连接或程序访问A电脑上的数据库,并将图片音频从B电脑存储至A电脑上的SQL Server数据库并读出

    想必大家都有这样的疑问,A电脑上安装了SQL Server并创建了数据库,B电脑上也安装有SQL Server,现在需要用B电脑上的SQL Server连接A电脑上SQL Server里的数据库并进行 ...

  5. vb 访问远程计算机,vb 怎么访问远程电脑SQL SERVER数据库

    一.如果可以直接操作服务器检查步骤如下: 1.确定数据库服务器的服务正常开启. 2.确定数据库的链接数没有满.测试这个,可以在服务器上用查询命令. 1).用SQL语句:select count(*) ...

  6. 【QT 数据库专辑】【04】WIN7下搭建本地SQL SERVER数据库 - 手把手-登录远程数据库帐号设定问题

    前言: 多次数据库试验经验报名,远程数据库的访问问题,大多数是因为有帐号和访问权限的原因. 本文,通过从安装SQL SERVER开始暂时,我们在远程访问SQL SERVER数据库的时候可能遇到的问题. ...

  7. 公网远程连接windows SQL Server数据库【内网穿透】

    文章目录 1. 本地安装配置SQL Server 2. 将本地sqlserver服务暴露至公网 2.1 本地安装cpolar内网穿透 2.2 创建隧道 3. 公网远程连接sqlserver 3.1 使 ...

  8. Sql Server数据库之间如何进行异地远程连接

    最近在做软件工程课程设计,因为是小组作业,懒得每个队友建立一个数据库,于是就想说只有一个人建数据库,其余人连上,这样就算一个人改动了其中的数据,其他人数据库的内容也是可以同步的. 查阅了很多资料,现在 ...

  9. 【远程连接 多个SQL SERVER数据库实例】

    远程连接 多个SQL SERVER数据库实例 前言 一.查看数据库实例动态端口 1. 打开SQL Server 配置管理器 2.打开TCP/IP,查看实例对应的端口号 3.远程连接对应的实例 二.设置 ...

最新文章

  1. TensorFlow王位不保?ICLR投稿论文PyTorch出镜率快要反超了
  2. 利用SQL语句查找某数据库中所有存储过程包含的内容
  3. SAP UI5 extension component loads standard component
  4. 三星WP7手机MANGO一分钟完美越狱
  5. python--从入门到实践--chapter 10 文件及错误
  6. python接口自动化(四十三)-公共模块 pymysql 连接mysql数据库(单独说明)
  7. Python报错:module ‘turtle’ has no attribute ‘pensize’
  8. 愚人节的礼物 栈
  9. php循环5000条会不会崩,PHP -- 循环
  10. gg修改器怎么能让服务器检测不到,gg修改器怎么绕过检测 | 手游网游页游攻略大全...
  11. android设计个人简历页面_Android程序员简历模板
  12. 计算机基本概念--超标量,多发射
  13. 微信中“下单账号和支付账号不一致,请核实后再支付”原因及解决办法 hideMenuItems 复制链接
  14. 免费的mysql云平台_免费的mysql云服务器
  15. Xmanager 5安装及使用
  16. quartusii生成FIFO
  17. PHP中xml转json
  18. N型电池将成为下一代主流方向
  19. 专题:手把手学习硬件基础------9、电源电路
  20. 【BigDecimal.compareTo 遇到的坑】

热门文章

  1. 01 | n2n虚拟局域网
  2. yolov5 超大图片检测套路(附代码)
  3. dedecms织梦系统在线报名表单插件安装及配置详细教程
  4. 【中英双语】计算机视觉Opencv、Python大师班
  5. ORACLE_错误代码
  6. 建筑能耗管理系统,大型公共建筑电能耗的监测及能源管理迫在眉睫!
  7. 本科大数据毕业就业容易吗?
  8. IDC行业的前景怎么样?
  9. [软件人生]学习有捷径么?
  10. LED 控制卡 单元板 接口引脚定义