虚拟机中一个系统用c++操作另一个系统的sql Server数据库

本文详细介绍了如何在Windows XP系统中通过C++代码远程操作Win7系统的数据库。首先确保两系统网络连通,然后在XP系统中创建ODBC数据源,并测试连接。接着,展示了C++代码实现数据库的连接、数据插入操作。最后,强调了配置完成后需重启SQL Server服务的MSSQLSERVER实例,并提供了完整代码示例。
摘要由CSDN通过智能技术生成

以我在xp系统中写c++代码去操作win7系统的数据库为例。

 

首先要确保两个系统之间能够ping通

然后在xp系统中telnet sqlserver的端口号

1.创建ODBC数据源(先在xp系统中建立ODBC数据源)

-》打开控制-》性能和维护-》管理工具-》数据源(ODBC)-》

 

 

 

 

 

 之后全是下一步 直到完成

最后可以测试连接是否成功

这样就建好了

2. 确保数据能够被操作

 

 配置完之后需要重启SQL Server服务里的MSSQLSERVER

 3.代码部分

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
#include <odbcss.h>
#define MAXBUFLEN 255
SQLHENV henv = SQL_NULL_HENV;
SQLHDBC hdbc1 = SQL_NULL_HDBC;
SQLHSTMT hstmt1 = SQL_NULL_HSTMT;

using namespace std;

int main()
{
    RETCODE retcode;
    UCHAR   szDSN[15] = "hhh"; //数据源名称
    UCHAR userID[6] = "sa";//数据库用户ID
    UCHAR passWORD[29] = "12345";//用户密码
    
    //1.连接数据源  
    //1.环境句柄   
    retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
    retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
    //2.连接句柄    
    retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1);//申请句柄
    retcode = SQLConnect(hdbc1, szDSN, SQL_NTS, userID, SQL_NTS, passWORD, SQL_NTS);
    //判断连接是否成功   
    if ((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
    {
        printf("连接失败!\n");
    }
    else
    {
    /*
    1.分配一个语句句柄(statement handle)
    2.创建SQL语句
    3.执行语句
    4.销毁语句
        */
        retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);
        char sql[100] = "insert into test values(22,122)";
        retcode = SQLExecDirect(hstmt1, (SQLCHAR*)sql, strlen(sql));
        if (retcode==-1) {
            printf("失败");
        }else if (retcode==0) {
            printf("成功");
        }
        //释放语句句柄 
        retcode = SQLCloseCursor(hstmt1);
        retcode = SQLFreeHandle(SQL_HANDLE_STMT, hstmt1);
    }
    //3.断开数据库连接
    /*
    1. 断开数据库连接
    2.释放连接句柄.
    3.释放环境句柄(如果不再需要在这个环境中作更多连接)
    */
    SQLDisconnect(hdbc1);
    SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);
    SQLFreeHandle(SQL_HANDLE_ENV, henv);
    
    return 0;
    
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值