如题:在WIN10 专业版环境下, 基于ODBC技术里面的细分技术:BULK INSERT
使用C++语言,3S写入10万行数数据。
**每行数据如下
typedef struct
{
SQLINTEGER rec_num;//typedef long SQLINTEGER;
SQLINTEGER rec_numInd;
SQLCHAR date[9];
SQLINTEGER dateInd;
SQLCHAR time[9];
SQLINTEGER timeInd;
SQLCHAR reff[11];
SQLINTEGER reffInd;
SQLCHAR acc[11];
SQLINTEGER accInd;
SQLCHAR stock[7];
SQLINTEGER stockInd;
SQLCHAR bs[2];
SQLINTEGER bsInd;
SQLCHAR price[9];
SQLINTEGER priceInd;
SQLCHAR qty[9];
SQLINTEGER qtyInd;
SQLCHAR status[2];
SQLINTEGER statusInd;
SQLCHAR owflag[4];
SQLINTEGER owflagInd;
SQLCHAR ordrec[9];
SQLINTEGER ordrecInd;
SQLCHAR firmid[6];
SQLINTEGER firmidInd;
SQLCHAR branchid[6];
SQLINTEGER branchidInd;
SQLSCHAR checkord[16];
SQLINTEGER checkordInd;
} ORDWTH;//要插入的一行,作为一个结构体。
***
参考的帖子是:XXX
代码如下:
// Test_GSZ_ODBC.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//包含头文件
#define _CRT_SECURE_NO_DEPRECATE
#include<Windows.h>
#include<sql.h>
#include<sqlext.h>
#include <iostream>
#include <tchar.h>///_T 这个字符需要这个头文件,不然不认识
using namespace std;
SQLRETURN gsz_insert(SQLHDBC L_hDbc, SQLHDBC L_hEnv, SQLINTEGER L_id);
SQLHDBC G_hDbc = NULL;//设备句柄
SQLHENV G_hEnv = NULL;//环境句柄
#define COUNT (100000)
typedef struct
{
SQLINTEGER rec_num;//typedef long SQLINTEGER;
SQLINTEGER rec_numInd;
SQLCHAR date[9];
SQLINTEGER dateInd;
SQLCHAR time[9];
SQLINTEGER timeInd;
SQLCHAR reff[11];
SQLINTEGER reffInd;
SQLCHAR acc[11];
SQLINTEGER accInd;
SQLCHAR stock[7];
SQLINTEGER stockInd;
SQLCHAR bs[2];
SQLINTEGER bsInd;
SQLCHAR price[9];
SQLINTEGER priceInd;
SQLCHAR qty[9];
SQLINTEGER qtyInd;
SQLCHAR status[2];
SQLINTEGER statusInd;
SQLCHAR owflag[4];
SQLINTEGER owflagInd;
SQLCHAR ordrec[9];
SQLINTEGER ordrecInd;
SQLCHAR firmid[6];
SQLINTEGER firmidInd;
SQLCHAR branchid[6];
SQLINTEGER branchidInd;
SQLSCHAR checkord[16];
SQLINTEGER checkordInd;
} ORDWTH;//要插入的一行,作为一个结构体。
#define ROW_ARRAY_SIZE 1000//每次插入的行数
ORDWTH ordwth_array[ROW_ARRAY_SIZE];
int rec_num = 1;
//微软的范例:https://docs.microsoft.com/zh-cn/sql/connect/odbc/cpp-code-example-app-connect-access-sql-db?view=sql-server-ver15
int main()
{
//设置为中文
_wsetlocale(LC_ALL, L"chs");
SQLRETURN ret = SQL_ERROR;//定义一个变量,用于存储数据操作相关函数的返回值
//第一步:加载环境句柄
//SQL_HANDLE_ENV:用于申请环境句柄
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &G_hEnv);
if (SQL_SUCCESS == ret)
{
wcout<<_T("环境句柄分配成功" )<< endl;
}
else
{
wcout << _T("环境句柄分配失败") << endl;
// fwprintf(stderr, L"Unable to allocate an environment handle\n");
exit(-1);
}
//第二步:设定ODBC的版本
ret = SQLSetEnvAttr(G_hEnv, SQL_ATTR_ODBC_VERSION, (S