All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
每个开发人员现在应该下载的十种必备工具,2_[Asp.Net教程]
技巧:PHP的优化,缓冲,压缩实际的解决方案_php资料_编程技术
ASP.NET网络编程中经常会用到的27个函数集_.net资料_编程技术
不需xp_cmdshell支持在有注入漏洞的SQL服务器上运行CMD命令_[SQL Server教程]
C#网络应用编程基础练习题与答案(四)_[Asp.Net教程]
利用C#远程存取Access数据库_[Asp.Net教程]
asp.net实现站点RSS功能_[Asp.Net教程]
delphi构造函数与析构函数的使用方法
SQL Server 2005数据加密技术应用研究_[SQL Server教程]
优秀的社区软件Discuz!之NT版本教程_.net资料_编程技术
Reading number is top 10 pictures
这才叫绝色美女1
2012 national geographic daily picture4
西游四格漫画(五)
A man's favorite things4
关于海盗的研究2
The real super beauty3
八个盛产美女的国家1
Shandong jinan is about to dismantle a one hundred-year history of the building
Magnificent cloud2
美洲杯宝贝的雨中风情1
Download software ranking
c#程序设计案例教程
传奇私服架设教程
传奇私服架设教程-chm
Tram sex maniac 2 (H) rar bag13
中国结婚习俗实录
Boxer vs Yellow1
Macromedia Dreamweaver 8
塘西风月痕
ASP.NET.2.0.XML.高级编程(第3版)
Tram sex maniac 2 (H) rar bag4
delv published in(发表于) 2013/12/30 4:36:42 Edit(编辑)
sql,server,unicode,支持_mssql学习_编程技术

sql,server,unicode,支持_mssql学习_编程技术

sql server unicode 支持_mssql学习_编程技术-你的首页-uuhomepage.com
所有的文档和网上的文章都说N可以解决问题。但如果使用wstring bind后select...,则会发现得到的 wstring 格式的column很大可能结果是乱码。
其实可以这样解释这个问题:键盘是没法输入uniocde编码的,除非用微软拼音的内码输入。因此数据库的客户端软件输入表的内容并非unicode,即使在表设计的时候用了N。因此select出来的结果并不能用wsting来解析。
那么我们怎么在初始化数据库的时候使用unicode字符串呢?
SQLRETURN SQLExecDirect(
SQLHSTMT StatementHandle,
SQLCHAR * StatementText,
SQLINTEGER TextLength);
sql 在执行的时候,调用SQLExecDirect,其sql语句是SQLCHAR 类型,其实就是unsigned char 的一段空间,并不一定要求这是一个以'\0'结尾的ascii 字符串。如果StatementText是一个ascii 字符串,TextLength可以设置为SQL_NTS。
StatementText是可以嵌入unicode字符的,比如使用INSERT INTO T (c1,c2) VALUES(N'unicode string',data),这时候TextLength要填入整个串的长度而不是SQL_NTS。
拼写出这样一个串既不能用窄字符串的函数集合,也不能用宽字符串的函数集合。这里使用memcpy类的函数来构造这样的串,然后调用SQLExecDirect,取得了成功。比如,
USE [test]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[电话薄](
[姓名] [ntext] NULL,
[电话] [nchar](32) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
/*
* insert a unicode string into the table
*
*/
struct buf_s{
void * buf;
int len;
};
/*
*just be same as memcpy ,except for the return.
*/
int memapend(void * dst, void * src ,int len)
{
memcpy(dst,src,len);
return len;
}
void insert()
{
unsigned char sql_buf[256]={0};
int len_sql=0;
char str1[]="insert into 电话薄 (姓名,电话) values(N'";
int len1=strlen(str1);
wchar_t str2[]=L"张三";
int len2=wcslen(str2)*sizeof(wchar_t);
char str3[]="',N'";
int len3=strlen(str3);
wchar_t str4[]=L"010123456";
int len4=wcslen(str4)*sizeof(wchar_t);
char str5[]="')";
int len5=strlen(str5);
buf_s buf_s_a []={str1,len1,
str2,len2,
str3,len3,
str4,len4,
str5,len5};
for (int i=0;i{
len_sql+=memapend(sql_buf+len_sql, buf_s_a[i].buf,buf_s_a[i].len);
}
SQLExecDirect(h,sql_buf,len_sql);
}
btw:find a good site for ms_sqlserver:
http://www.functionx.com/sqlserver/




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.