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 };//最後一個裏面是'\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\n", new_table_name); printf("新表名的長度: %d\n", 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\n", 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\n", 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\n", gsz_WCHAR_Array_Sql); printf("content end\n"); //辛:將數據通過參數返回 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\n", gsz_WCHAR_Array_Sql); }