C++网络接收数据写入SQLSERVER

C++网络接收数据写入SQLSERVER

所需软件:
VS、SQLSERVER 2012、NAVICAT
下载链接:
本人云盘-》

链接:https://pan.baidu.com/s/1qADgncE43sN9jhVDoaFHzA
提取码:7tng
VS:

  1. 创建Win32控制台应用程序项目。
  2. 项目属性—》常规—》字符集改成是未设置。
    SQLSERVER:
  3. 尽量一次性安装成功。
  4. 若第一次安装失败,应多花时间卸载干净。
  5. 记住配置过程中的实例名
  6. 安装过程中使用混合验证:密码一般为123
    选择混合模式
  7. 打开SQL Server配置管理器
    双击右侧的服务选择服务标签即可看到启动模式,点击下拉标签可以切换为手动启动,点击确认退出。
    双击右侧的服务选择服务标签即可看到启动模式,点击下拉标签可以切换为手动启动,点击确认退出。
    Navicat:
    是SQLSERVER的操作工具。
  8. 打开Navicat,点击新建链接。
  9. 填入基本信息,即之前的混合验证名称和密码。主机名、新建命名等。
  10. 新建成功后,在dbo下建表等。(如下为数据对应类型)


    注意:字符串长度
    ODBC数据源配置
  11. 在控制面板找到ODBC、选择用户DSN.
    选择添加
  12. 点击ODBC的添加按钮,选择SQL Server,这是会出现创建SQL Server的新数据源的对话框,我以local为名建立名称,选择SQL登陆的服务器,再点击下一步,选择登陆方式:网络登陆、用户输入登陆,任选(我选择用户输入登陆,以:用户名sa 密码123为例 )。
  13. 选择混合验证
  14. 选择数据库test.
  15. 测试数据源看是否成功。不成功则返回修改服务器与登录ID和密码。(图中画圈地方打开可找到)
    点击开始找到SQLSERVER
    使用C++访问数据库:
    用VS创建控制台应用程序:
  /*SQLINTEGER num1, age1;
            // ConsoleApplication1.cpp : 定义控制台应用程序的入口点。*/
             #include <stdio.h>    
                    #include <string.h>    
                    #include <windows.h>    
                    #include <sql.h>   
                    #include <sqlext.h>    
                    #include <sqltypes.h>    
                    #include <odbcss.h>
                    #include <iostream>
                    #include<string>
                    #include<time.h>
                    #include<cstring>
                    #include "data_structure.h"
                    using namespace std;
                    #pragma warning( disable : 4996)
                    #define MAXSTRSIZE 1024
                    char entity[255];
                    char exm[1024];/*
                    struct msg
                    {
                    	变量定义区
                    };
         void workertianjiashuju(Message ms)
                {
                    	SQLRETURN ret; //DESKTOP - QILGJO2\MSSQLSERVER1
                    	SQLHENV henv;//SQLHANDLE henv 
                    	SQLHDBC hdbc;//SQLHANDLE hdbc 
                    	SQLHSTMT hstmt;//SQLHANDLE hstmt 
            	ret = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);//申请环境句柄 
            	ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);//设置环境属性 
            	ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);//申请数据库连接句柄 
            	ret = SQLConnect(hdbc, (SQLCHAR*)"local1", SQL_NTS, (SQLCHAR*)"sa", SQL_NTS, (SQLCHAR*)"123", SQL_NTS);//连接数据库 
            	if (ret == *SQL_SUCCESS || ret* == SQL_SUCCESS_WITH_INFO) {
            		cout << "数据库连接成功" << endl;
            		ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);//申请SQL语句句柄 
            		SQLCHAR sql[] = "INSERT INTO car_copy VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";//SQL操作语句问号为参数数量。
            		SQLLEN P = SQL_NTS;
            		ret = SQLPrepare(hstmt, sql, SQL_NTS);
            		/*ret = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 255, 0, &a, 255, &P);//逐个绑定参数
            		ret = SQLExecute(hstmt);//直接执行SQL语句 
            		//cout << "zhixingwanzhiqiandadadada大大大" << endl;
            		if (ret == SQL_ERROR) {
            			cout << "数据库错误" << endl;
            			system("pause");
            		}
            		if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {
            			/*****************测试结构体数组********************/
            			cout << ">>>>>>>>>>>>>>往数据库添加信息成功" << endl;
            			SQLFreeHandle(SQL_HANDLE_STMT, hstmt);//释放语句句柄 
            		}
            		else printf("添加数据库操作失败!\n");
            		SQLDisconnect(hdbc);//断开与数据库的连接 
            	}
            	else printf("连接数据库失败!\n");
            	SQLFreeHandle(SQL_HANDLE_DBC, hdbc);//释放连接句柄 
            	SQLFreeHandle(SQL_HANDLE_ENV, henv);//释放环境句柄
            }在这里插入代码片

在这里插入图片描述

参数绑定过程以上图为准,黑点代表默认匹配类型,空白点代表可以匹配。
[1]: https://blog.csdn.net/winnyrain/article/details/74003972
[2]: https://www.cnblogs.com/beta-data/p/4457898.html
[3]: https://www.cnblogs.com/kzloser/archive/2012/11/29/2794815.html**

猜你喜欢

转载自blog.csdn.net/weixin_38327816/article/details/91879597