博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
团队项目:VS2013和SQL Server2012的连接使用
阅读量:6230 次
发布时间:2019-06-21

本文共 4305 字,大约阅读时间需要 14 分钟。

由于团队项目是要开发一款多人网游,所以需要用到注册页面,同时游戏内的一些实时数据也全要记录在数据库中

所以,最近学到了VS2013和SQL Server2012的连接,先附上代码:

#include "stdafx.h"#include "stdlib.h"#include 
#include
#include
#include
#include
#include
#include
#include
using namespace std;SQLHENV henv = SQL_NULL_HENV;SQLHDBC hdbc1 = SQL_NULL_HDBC;SQLHSTMT hstmt1 = SQL_NULL_HSTMT;RETCODE retcode;bool link(){ UCHAR szDSN[SQL_MAX_DSN_LENGTH + 1] = "lxd123", szUID[MAXNAME] = "sa", szAuthStr[MAXNAME] = "123"; retcode = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv); retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER); retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1); retcode = SQLConnect(hdbc1, szDSN, (SWORD)strlen((char*)szDSN), szUID, (SWORD)strlen((char*)szUID), szAuthStr, (SWORD)strlen((char*)szAuthStr)); if ((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO)) { return false; } return true;}void input(char *ID,char *password){ SQLINTEGER p; UCHAR pre_sql[50] = "insert into internet values(?,?)"; retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1); p = SQL_NTS; SQLPrepare(hstmt1, pre_sql, 50); SQLBindParameter(hstmt1, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(ID), 0, ID, 0, &p); SQLBindParameter(hstmt1, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(password), 0, password, 0, &p); SQLExecute(hstmt1); SQLCloseCursor(hstmt1); SQLFreeHandle(SQL_HANDLE_STMT, hstmt1); SQLDisconnect(hdbc1); SQLFreeHandle(SQL_HANDLE_DBC, hdbc1); SQLFreeHandle(SQL_HANDLE_ENV, henv);}void Register(char *ID,char *password){ bool b = true; SQLINTEGER p; CHAR getID[50],getpassword[50]; int set_num = 0; UCHAR inquiry[70] = "select ID from internet where ID=\'"; strcat((char*)inquiry, ID); strcat((char*)inquiry, "\'"); retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1); p = SQL_NTS; SQLPrepare(hstmt1, inquiry, strlen((char*)inquiry)); SQLExecute(hstmt1); while (SQL_NO_DATA != SQLFetch(hstmt1)) //移动光标,一直到集合末尾 { SQLGetData(hstmt1, 1, SQL_C_CHAR, getID, 50, &p); b = false; } if (b==false) { printf("注册失败"); system("pause"); } else { input(ID,password); printf("注册成功"); system("pause"); } SQLCloseCursor(hstmt1); SQLFreeHandle(SQL_HANDLE_STMT, hstmt1); SQLDisconnect(hdbc1); SQLFreeHandle(SQL_HANDLE_DBC, hdbc1); SQLFreeHandle(SQL_HANDLE_ENV, henv); system("pause");}int _tmain(int argc, _TCHAR* argv[]){ link(); Register("ji5jin45","7979lxd"); return 0;}

首先这是一个注册系统的实现:

第一步,配置ODBC服务器:

Win+R键打开运行菜单,输入odbcad32,点击回车

 

 

点击添加

选择SQL Server Native Client 11.0

编辑数据库的名字,Server选择SQL Server服务器的名字

输入SQL Server的用户名和密码(一定要与SQL Server的登录名和登陆密码一致)

配置成功,在这个菜单里就可以看见你所有的SQL Server的数据库,选择你需要连接的数据库即可,然后一直下一步

第二步,在VS2013端编辑代码

bool link(){        UCHAR        szDSN[SQL_MAX_DSN_LENGTH + 1] = "lxd123",  //服务器定义的名字        szUID[MAXNAME] = "sa",  //数据库登录名         szAuthStr[MAXNAME] = "1231231";   //数据库登陆密码    retcode = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);  //定义连接变量    retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);    retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1);  //定义句柄    retcode = SQLConnect(hdbc1, szDSN, (SWORD)strlen((char*)szDSN), szUID, (SWORD)strlen((char*)szUID), szAuthStr, (SWORD)strlen((char*)szAuthStr));    if ((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))   {        return false;    }    return true;}

这个是程序与数据库的连接代码,hdbc1是连接数据库的句柄,这个概念之后会解释到,如果前面设置没有错误的化,这里应该顺利连接

void input(char *ID,char *password){    SQLINTEGER   p;  //数据库输入变量    UCHAR    pre_sql[50] = "insert into internet values(?,?)";  //传递给数据库执行的语句    retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);      p = SQL_NTS;    SQLPrepare(hstmt1, pre_sql, 50);  //准备参数,将pre_sql赋值给hstmt1    SQLBindParameter(hstmt1, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(ID), 0, ID, 0, &p); //将hstmt1传给数据库,让数据库执行表语句    SQLBindParameter(hstmt1, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(password), 0, password, 0, &p);    SQLExecute(hstmt1);    SQLCloseCursor(hstmt1);    SQLFreeHandle(SQL_HANDLE_STMT, hstmt1);    SQLDisconnect(hdbc1);    SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);    SQLFreeHandle(SQL_HANDLE_ENV, henv);}

这段代码的的结果

输入一个用户名:zxbsba,密码21356316

如果注册账户已经存在:

转载于:https://www.cnblogs.com/ji5jin45/p/5471051.html

你可能感兴趣的文章
在jfinal中使用druid,并配置查看权限
查看>>
视频+书签 Powerpiont2010可以这样玩
查看>>
如何限制GNS3中CPU的使用率(ASA)
查看>>
首都机场以后也能刷脸坐飞机了
查看>>
PyQt的Layout的比例化分块。
查看>>
python os模块
查看>>
随机生成验证码
查看>>
用Windows画图改变图片大小(附Linux企鹅头像完全版)。
查看>>
NOSQL系列-Redis精简版安装与Ruby测试
查看>>
追MM 之适配器模式实现
查看>>
一种测试方向的探讨-基于模型测试调研引发的思考 - 2
查看>>
Windows 7可以拯救微软Netbook市场
查看>>
彻底清除 mplay.com与mplay.exe病毒
查看>>
向右键添加新建脚本菜单
查看>>
Office 2010带来的协同工作体验
查看>>
MySQL 常见错误提示
查看>>
Dynamips ADSL实验之一pppoeoa(工大瑞普修正版)
查看>>
SQL Server 2012 Always on Availability Groups安装Step by step 1
查看>>
磁盘及文件操作命令
查看>>
shell 学习之case语句
查看>>