以我在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;
}