WCHAR的相關操作 範例 , 同時也是產生創建Sqlserver語句新表的 Sql

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

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章