• 周四. 12 月 12th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

WCHAR的相关操作 范例 , 同时也是产生创建Sqlserver语句新表的 Sql

admin

11 月 28, 2021
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);

}

发表回复