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;}