int gsz_CreateSql_NEWTable(WCHAR product_SN[],int product_SN_size, WCHAR WCHAR_Array_Sql[],int WCHAR_Array_Sql_size) { //第一步:定义一个WCHAR 数组,用于存储合成得到的新表名字 WCHAR new_table_name[50] = { 0 };//最后一个里面是'' //第二步:定义一个WCHAR 数组。用于存储合成得到的时间 WCHAR date[16] = { 0 }; SYSTEMTIME time; GetLocalTime(&time); swprintf_s(date, _T("%d%02d%02d_%02d%02d%02d"), time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute, time.wSecond); //第三步:定义一个WCHAR 数组。用于存储表的前缀 WCHAR gsz_Table_[7] = L"Table_";//16-bit UNICODE character //第四步:定义一个WCHAR 数组。用于存储产品的SN //WCHAR gsz_product_SN[50] = L"SN0123456789";//16-bit UNICODE character WCHAR gsz_product_SN[50] = { 0 }; memcpy(&gsz_product_SN[0], product_SN, product_SN_size * sizeof(WCHAR)); //第五步:开始合成新表的名字 memcpy(&new_table_name[0], gsz_Table_, wcslen(gsz_Table_) * sizeof(WCHAR));//内存基本操作:将gsz_Table_里面的值写入 memcpy(&new_table_name[6], date, wcslen(date) * sizeof(WCHAR));//内存基本操作:将gsz_Table_里面的值写入 memcpy(&new_table_name[21], gsz_product_SN, wcslen(gsz_product_SN) * sizeof(WCHAR));//内存基本操作:将gsz_Table_里面的值写入 int len_new_table_name = wcslen(new_table_name);//获取新表的名字的长度,后面要用到 printf("新表的名字: %ls ", new_table_name); printf("新表名的长度: %d ", len_new_table_name); //范例: L"select * into [Test_Noise_Gsz].[dbo].[Table_2021_0821_1324] from [Test_Noise_Gsz].[dbo].[Table_wan_zheng] ";// 200个字节 //甲: 定义一个WCHAR数组, 用于存放Sql语句,这个语句可以根据旧表创建新表。 WCHAR gsz_WCHAR_Array_Sql[200] = { 0 }; int gsz_WCHAR_Array_Sql_len = wcslen(gsz_WCHAR_Array_Sql);//此函数返回宽字符串的长度 //乙:Sql语句的前缀 WCHAR gsz_Sql_QianZhui[50] = L"select * into [Test_Noise_Gsz].[dbo].["; //丙:Sql语句的后缀 WCHAR gsz_Sql_HouZhui[50] = L"] from [Test_Noise_Gsz].[dbo].[Table_wan_zheng]"; //丁:将前缀合成到 Sql语句里面 memcpy(&gsz_WCHAR_Array_Sql[gsz_WCHAR_Array_Sql_len], gsz_Sql_QianZhui, wcslen(gsz_Sql_QianZhui) * sizeof(WCHAR)); gsz_WCHAR_Array_Sql_len = wcslen(gsz_WCHAR_Array_Sql);//此函数返回宽字符串的长度 printf("最终得到的Sql语句: %ls ", gsz_WCHAR_Array_Sql); //戊:将新的表名字 合成到Sql语句里面 memcpy(&gsz_WCHAR_Array_Sql[gsz_WCHAR_Array_Sql_len], new_table_name, len_new_table_name * sizeof(WCHAR)); gsz_WCHAR_Array_Sql_len = wcslen(gsz_WCHAR_Array_Sql);//此函数返回宽字符串的长度 printf("最终得到的Sql语句: %ls ", gsz_WCHAR_Array_Sql); //己:将后缀 合成到Sql语句里面 memcpy(&gsz_WCHAR_Array_Sql[gsz_WCHAR_Array_Sql_len], gsz_Sql_HouZhui, wcslen(gsz_Sql_HouZhui) * sizeof(WCHAR)); gsz_WCHAR_Array_Sql_len = wcslen(gsz_WCHAR_Array_Sql);//此函数返回宽字符串的长度 //庚:打印出来 printf("最终得到的Sql语句: %ls ", gsz_WCHAR_Array_Sql); printf("content end "); //辛:将数据通过参数返回 memcpy(&WCHAR_Array_Sql[0], gsz_WCHAR_Array_Sql, gsz_WCHAR_Array_Sql_len * sizeof(WCHAR)); return 1; }
***********
使用
int main() { //定义SN WCHAR gsz_product_SN[50] = L"SNW0123456789";//16-bit UNICODE character //定义Sql变量 WCHAR gsz_WCHAR_Array_Sql[200] = { 0 }; //给Sql变量赋值 gsz_CreateSql_NEWTable(gsz_product_SN, wcslen(gsz_product_SN),gsz_WCHAR_Array_Sql,1); //输出结果 printf("返回的Sql语句: %ls ", gsz_WCHAR_Array_Sql); }