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

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

#include "stdafx.h"
#include "stdlib.h"
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
#include <odbcss.h>
#include <iostream>
using namespace std;SQLHENV henv = SQL_NULL_HENV;
SQLHDBC hdbc1 = SQL_NULL_HDBC;
SQLHSTMT hstmt1 = SQL_NULL_HSTMT;
RETCODE retcode;bool link()
{UCHARszDSN[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()
{UCHARszDSN[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赋值给hstmt1SQLBindParameter(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

团队项目:VS2013和SQL Server2012的连接使用相关推荐

  1. SQL Server2012无法连接到服务器

    SQL Server Management Studio 常常会出现无法连接到计算机的问题,关闭软件或关闭计算机,再启动软件连接的时候,弹出窗口提示无法连接到计算机的服务器. 提示信息如下: 在与SQ ...

  2. 关于SQL Server 无法连接到服务器,远程过程调用失败,网络配置无项目

    SQL Server 无法连接到服务器,远程过程调用失败,网络配置无项目 sql server很久没有用了,今天用的连接的时候出现了以下问题:未找到或无法访问服务器. 一般来说我们在sql serve ...

  3. 团队项目开发编码规范

    团队项目开发"编码规范"之一:概述 "程序员.程序员"顾名思义就是来编程序的人员.他们和一般工作人员是一样的,都需要合作,可能为了一个大型项目程序会有十人以上或 ...

  4. 解决:provider:Named Pipes Provider error:40无法打开SQL Server的连接

    问题描述: 在环境(SQL Server2008.Win7.32位.VS2010开发系统)下,连接数据库失败,出现"在于SQL Server建立连接时出现与网络相关的或特定于实例的错误,未找 ...

  5. SQL Server2012 学习之(一) :入门知识

    SQL Server是Microsoft发布的一个关系型数据库管理系统,用于对多个数据库进行管理.从今天起对SQL Server2012进行学习,也算是做个攻略,方便后来的学习者,持续更新ing.. ...

  6. 微软SQL Server2012增长对Hadoop的支撑

    名人名言:有的人自认为会做一些事情,实际上他们什么都不会,只是什么都懂一点而已.对于什么都不需要的人,他们什么都愿意出借,而对真正需要的人,却什么也不拿出来:另一些人悄悄审度着别人的思想,而将自己的金 ...

  7. 01组团队项目-Alpha冲刺-6/6

    一.基本情况(15) 团队ID:01 团队名称:画饼大队 组长博客:https://bbs.csdn.net/topics/609271441 小组人数:11 二.冲刺概况汇报(60分) 廖国均 过去 ...

  8. 01组团队项目-Alpha冲刺-5/6

    一.基本情况(15) 团队ID:01 团队名称:画饼大队 组长博客:https://bbs.csdn.net/topics/609207601 小组人数:11 二.冲刺概况汇报(60分) 廖国均 过去 ...

  9. 01组团队项目-Alpha冲刺-1/6

    一.基本情况(15) 团队ID:01 团队名称:画大饼队 组长博客:[01组团队项目-Alpha冲刺-1/6-CSDN社区] 小组人数:11 二.冲刺概况汇报(60分) 廖国均 过去两天完成了哪些任务 ...

  10. 01组团队项目-Alpha冲刺-1/6(wxy)

    一.基本情况(15) 团队ID:01 团队名称:画饼大队 组长博客:[01组团队项目-Alpha冲刺-1/6-CSDN社区](01组团队项目-Alpha冲刺-1/6-CSDN社区) 小组人数:11 二 ...

最新文章

  1. Java 巨坑篇之无底深坑Long类型
  2. [DeeplearningAI笔记]序列模型2.3-2.5余弦相似度/嵌入矩阵/学习词嵌入
  3. Vue的自定义滚动,我用el-scrollbar
  4. 2的1000 次是超出python表示范围的整数。_第4卷讲解Python语言计算机等级考试二级操作题...
  5. 一生应该感谢的十种人
  6. 分布式认证需求-开放认证体系
  7. Oracle 变量绑定与变量窥视合集系列一
  8. AngularJs 相应回车事件
  9. 第45课 蝴蝶效应-动动脑 第3题 《小学生C++趣味编程》
  10. 获取url中的参数方法,避免#的干扰,删除url指定参数(vue hash模式 有#删除指定参数问题)
  11. iphone11系列的尺寸_揭秘iPhone12日常使用的2大隐患:还不如iPhone11?|iphone11|iphone12|电池|手机|电池容量|iphone...
  12. 机器翻译市场需求调研报告
  13. 客户说发货慢怎么回复_买家投诉卖家物流送货慢怎么处理
  14. Python文本处理,依次读取文本每一行,查找每一行特定位置的元素,生成列表,去重
  15. Python 在问答频道中刷题积累到的小技巧(二)
  16. win11 任务栏角溢出里的程序图标记录如何删除(WIN 缓存图标清理)
  17. 工厂方法模式-----女娃造人的故事
  18. native-JavaScript通信流程( 基于最新的 react native版本 )
  19. java中bean的作用域有哪些_Spring中Bean的5种作用域scope详解
  20. 开发过程中 勘误表errata注意事项

热门文章

  1. 记录php运行日记的方法
  2. net-snmp的定制编译
  3. mysql数据库集群版_MySQL数据库集群实战
  4. Vue.js 2.0从入门到放弃---入门实例(二)
  5. H264 视频文件 帧格式
  6. Linux acpi off学习的必要
  7. linux页表创建与更新
  8. Linux虚拟文件系统(节点路径搜索)
  9. python结构模式_Python程序中的观察者模式结构编写
  10. spark多字段排序与取topN