Visual Studio2022连接SQL Server数据库

  • 一、软件准备
    • 1. 安装Visual Studio2022
  • 二、环境配置
    • 1. 创建数据库
    • 2. 利用ODBC建立连接
  • 三、连接数据库
    • 1. Visual Studio2022测试连接数据库

本文基于Visual Studio2022和SQL Server2008通过ODBC将数据库与后端连接在一起。

一、软件准备

1. 安装Visual Studio2022

  • Visual Studio2022安装包下载官网,点击免费下载

  • 下载完安装包,双击安装包,点击继续

  • 这里勾选使用C++的桌面开发数据存储和处理有需要更改默认安装路径的要在第3步更改,不需要无需做第3步

  • 点击继续

  • 点击确定

二、环境配置

1. 创建数据库

  • 点击新建查询

  • 复制下面代码执行,创建数据库
CREATE DATABASE [Test] ONPRIMARY ( NAME = N'Test', FILENAME = N'D:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Test.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) LOG ON ( NAME = N'Test_log', FILENAME = N'D:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Test_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)GOuse Testgocreate table baseInfor(no int, name char(20), passWord char(10), otherchar(20))goinsert into baseInfor values(1001, '学生1', '1001', '计算机科学与技术'),(1001, '老师1', '1001', '讲师'),(2001, '管理员', '2001', '管理员')go

2. 利用ODBC建立连接

  • 在搜索框搜索ODBC,选择对应的位数。本例以ODBC64位为例

  • 进去应用,点击添加

  • 选择SQL Server

  • 名称填数据库名服务器复制刚进去SQL Server的服务器名称(如下图)点击完成


  • 点击下一页

  • 这里方框中要选中刚才创建的数据库

  • 点击测试数据源

  • 如果显示如下图的样子,恭喜你第一步成功,如果不是,请对照以上步骤,看哪里做错了

三、连接数据库

1. Visual Studio2022测试连接数据库

  • 新建项目后,先点击调试,后点击工程的调试属性

  • 点击高级

  • 将字符集修改为使用多字节字符集

  • 测试代码,如果显示如下图结果,恭喜你数据库连接成功了
#include#include#include#include#include#includeSQLRETURN ret;SQLHENV henv;SQLHDBC hdbc;SQLHSTMT hstmt;void Connect() {ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, SQL_IS_INTEGER);ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);ret = SQLConnect(hdbc, (unsigned char*)"Test", SQL_NTS, (unsigned char*)"sa", SQL_NTS, (unsigned char*)"", SQL_NTS);if (!(ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)) {printf("连接数据库失败!\n");return;}ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);}void free() {SQLDisconnect(hdbc);SQLFreeHandle(SQL_HANDLE_DBC, hdbc);SQLFreeHandle(SQL_HANDLE_ENV, henv);}void showStu() {Connect();SQLPrepare(hstmt, (SQLCHAR*)("select * from Test.dbo.baseInfor"), SQL_NTS);ret = SQLExecute(hstmt);if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {SQLCHAR str1[20], str2[20], str3[20], str4[20];SQLLEN len_str1, len_str2, len_str3, len_str4;while (SQLFetch(hstmt) != SQL_NO_DATA) {SQLGetData(hstmt, 1, SQL_C_CHAR, str1, 20, &len_str1);SQLGetData(hstmt, 2, SQL_C_CHAR, str2, 20, &len_str2);SQLGetData(hstmt, 3, SQL_C_CHAR, str3, 20, &len_str3);SQLGetData(hstmt, 4, SQL_C_CHAR, str4, 20, &len_str4);printf("%s\t%s\t%s\t%s\n", str1, str2, str3, str4);}}free();}int main() {showStu();return 0;}