vc访问远程mysql_vc实现对远程SQL Server数据库的访问
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数据库的访问相关推荐
- 1433端口无法连接(sql server 数据库无法访问问题)解决思路
1433端口无法连接(sql server 数据库无法访问问题)解决思路 参考文章: (1)1433端口无法连接(sql server 数据库无法访问问题)解决思路 (2)https://www.cn ...
- 访问MS Access 系统表 MSysObjects ,在SQL SERVER 2005中访问
首先设置MS Access,给予访问MSysObjects 的权限 1. Open Microsoft Access 2. From the Tools menu, select the Option ...
- SQL Server数据库单用户模式设置
将数据库设置为单用户模式 单用户模式是指只有一个用户可以访问某个资源的状态. SQL Server数据库单用户模式设置 在进行一些数据库操作时,需要先把数据库设置为单用户模式,操作完成后再改回普通模式 ...
- 利用花生壳实现B电脑远程连接或程序访问A电脑上的数据库,并将图片音频从B电脑存储至A电脑上的SQL Server数据库并读出
想必大家都有这样的疑问,A电脑上安装了SQL Server并创建了数据库,B电脑上也安装有SQL Server,现在需要用B电脑上的SQL Server连接A电脑上SQL Server里的数据库并进行 ...
- vb 访问远程计算机,vb 怎么访问远程电脑SQL SERVER数据库
一.如果可以直接操作服务器检查步骤如下: 1.确定数据库服务器的服务正常开启. 2.确定数据库的链接数没有满.测试这个,可以在服务器上用查询命令. 1).用SQL语句:select count(*) ...
- 【QT 数据库专辑】【04】WIN7下搭建本地SQL SERVER数据库 - 手把手-登录远程数据库帐号设定问题
前言: 多次数据库试验经验报名,远程数据库的访问问题,大多数是因为有帐号和访问权限的原因. 本文,通过从安装SQL SERVER开始暂时,我们在远程访问SQL SERVER数据库的时候可能遇到的问题. ...
- 公网远程连接windows SQL Server数据库【内网穿透】
文章目录 1. 本地安装配置SQL Server 2. 将本地sqlserver服务暴露至公网 2.1 本地安装cpolar内网穿透 2.2 创建隧道 3. 公网远程连接sqlserver 3.1 使 ...
- Sql Server数据库之间如何进行异地远程连接
最近在做软件工程课程设计,因为是小组作业,懒得每个队友建立一个数据库,于是就想说只有一个人建数据库,其余人连上,这样就算一个人改动了其中的数据,其他人数据库的内容也是可以同步的. 查阅了很多资料,现在 ...
- 【远程连接 多个SQL SERVER数据库实例】
远程连接 多个SQL SERVER数据库实例 前言 一.查看数据库实例动态端口 1. 打开SQL Server 配置管理器 2.打开TCP/IP,查看实例对应的端口号 3.远程连接对应的实例 二.设置 ...
最新文章
- TensorFlow王位不保?ICLR投稿论文PyTorch出镜率快要反超了
- 利用SQL语句查找某数据库中所有存储过程包含的内容
- SAP UI5 extension component loads standard component
- 三星WP7手机MANGO一分钟完美越狱
- python--从入门到实践--chapter 10 文件及错误
- python接口自动化(四十三)-公共模块 pymysql 连接mysql数据库(单独说明)
- Python报错:module ‘turtle’ has no attribute ‘pensize’
- 愚人节的礼物 栈
- php循环5000条会不会崩,PHP -- 循环
- gg修改器怎么能让服务器检测不到,gg修改器怎么绕过检测 | 手游网游页游攻略大全...
- android设计个人简历页面_Android程序员简历模板
- 计算机基本概念--超标量,多发射
- 微信中“下单账号和支付账号不一致,请核实后再支付”原因及解决办法 hideMenuItems 复制链接
- 免费的mysql云平台_免费的mysql云服务器
- Xmanager 5安装及使用
- quartusii生成FIFO
- PHP中xml转json
- N型电池将成为下一代主流方向
- 专题:手把手学习硬件基础------9、电源电路
- 【BigDecimal.compareTo 遇到的坑】