自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server unicode 支持的具體體現(xiàn)

數(shù)據(jù)庫 SQL Server
我們今天主要向大家講述的是SQL Server unicode 支持,在實(shí)際操作中我們經(jīng)常會(huì)遇到關(guān)于SQL Server unicode 支持的問題,以下就是主要內(nèi)容的介紹。

以下的文章主要向大家講述的是SQL Server unicode 支持,假如你對(duì)SQL Server unicode的實(shí)際應(yīng)用有興趣了解的話,你就可以通過以下的文章對(duì)其有更好的了解,以下就是具體方案的描述,希望在你今后的學(xué)習(xí)中會(huì)有所幫助。

所有的文檔和網(wǎng)上的文章都說N可以解決問題。但如果使用wstring bind后select...,則會(huì)發(fā)現(xiàn)得到的 wstring 格式的column很大可能結(jié)果是亂碼。

其實(shí)可以這樣解釋這個(gè)問題:鍵盤是沒法輸入uniocde編碼的,除非用微軟拼音的內(nèi)碼輸入。因此數(shù)據(jù)庫的客戶端軟件輸入表的內(nèi)容并非SQL Server unicode,即使在表設(shè)計(jì)的時(shí)候用了N。因此select出來的結(jié)果并不能用wsting來解析。

那么我們怎么在初始化數(shù)據(jù)庫的時(shí)候使用SQL Server unicode字符串呢?

  1. SQLRETURN SQLExecDirect(  
  2. SQLHSTMT StatementHandle,  
  3. SQLCHAR * StatementText,  
  4. SQLINTEGER TextLength);  

sql 在執(zhí)行的時(shí)候,調(diào)用SQLExecDirect,其sql語句是SQLCHAR 類型,其實(shí)就是unsigned char 的一段空間,并不一定要求這是一個(gè)以'\0'結(jié)尾的ascii 字符串。如果StatementText是一個(gè)ascii 字符串,TextLength可以設(shè)置為SQL_NTS。

StatementText是可以嵌入SQL Server unicode字符的,比如使用INSERT INTO T (c1,c2) VALUES(N'unicode string',data),這時(shí)候TextLength要填入整個(gè)串的長度而不是SQL_NTS。

拼寫出這樣一個(gè)串既不能用窄字符串的函數(shù)集合,也不能用寬字符串的函數(shù)集合。這里使用memcpy類的函數(shù)來構(gòu)造這樣的串,然后調(diào)用SQLExecDirect,取得了成功。比如,

  1. USE [test]  
  2. GO  
  3. SET ANSI_NULLS ON  
  4. GO  
  5. SET QUOTED_IDENTIFIER ON  
  6. GO  
  7. CREATE TABLE [dbo].[電話薄](  
  8. [姓名] [ntext] NULL,  
  9. [電話] [nchar](32) NULL  
  10. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]  
  11. /*  
  12. * insert a unicode string into the table  
  13. *  
  14. */  
  15. struct buf_s{  
  16. void * buf;  
  17. int len;  
  18. };  
  19. /*  
  20. *just be same as memcpy ,except for the return.  
  21. */  
  22. int memapend(void * dst, void * src ,int len)  
  23. {  
  24. memcpy(dst,src,len);  
  25. return len;  
  26. }  
  27. void insert()  
  28. {  
  29. unsigned char sql_buf[256]={0};  
  30. int len_sql=0;  
  31. char str1[]="insert into 電話薄 (姓名,電話) values(N'";  
  32. int len1=strlen(str1);  
  33. wchar_t str2[]=L"張三";  
  34. int len2=wcslen(str2)*sizeof(wchar_t);  
  35. char str3[]="',N'";  
  36. int len3=strlen(str3);  
  37. wchar_t str4[]=L"010123456";  
  38. int len4=wcslen(str4)*sizeof(wchar_t);  
  39. char str5[]="')";  
  40. int len5=strlen(str5);  
  41. buf_s buf_s_a []={str1,len1,  
  42. str2,len2,  
  43. str3,len3,  
  44. str4,len4,  
  45. str5,len5};  
  46. for (int i=0;i<sizeof(buf_s_a)/sizeof(buf_s);i++)  
  47. {  
  48. len_sql+=memapend(sql_buf+len_sql, buf_s_a[i].buf,buf_s_a[i].len);  
  49. }  
  50. SQLExecDirect(h,sql_buf,len_sql);  
  51. }  
  52. btw:find a good site for ms_sqlserver:  

以上的相關(guān)內(nèi)容就是對(duì)SQL Server unicode 支持的介紹,望你能有所收獲。

【編輯推薦】

  1. SQL Server 易混淆的一些數(shù)據(jù)類型有哪些?
  2. SQL Server 日期操作全接觸,嘻嘻
  3. 對(duì)SQL Server 2005 BI的描述
  4. 批量修改SQL Server 2005表構(gòu)架很簡單!
  5. MS SQL Server 2000系統(tǒng)數(shù)據(jù)類型有哪些?
     
責(zé)任編輯:佚名 來源: 51CTO
相關(guān)推薦

2009-09-08 14:45:24

Linq to SQL支持SQL Serve

2010-03-24 14:55:19

Python編程語言

2010-07-07 09:47:04

SQL Server索

2009-05-06 14:03:13

SQL Server日志log

2011-08-12 08:52:39

SQL ServerHadoop

2010-03-25 11:08:08

Python優(yōu)點(diǎn)

2010-10-21 16:38:27

sql server文

2010-08-03 13:36:55

DB2 9數(shù)據(jù)庫缺點(diǎn)

2010-12-23 09:25:20

SQL Server

2010-06-11 17:51:17

MySQL數(shù)據(jù)庫

2010-07-13 15:29:24

SQL Server

2010-07-22 17:33:42

2010-03-15 16:04:41

以太網(wǎng)技術(shù)

2010-06-18 11:31:48

SQL Server數(shù)

2012-04-25 15:23:52

SQL Server

2009-12-07 10:02:08

SQL Server支

2010-06-17 15:02:08

SQL SERVER

2011-03-28 16:39:41

SQL Server

2010-11-10 15:23:55

SQL SERVER

2009-12-23 13:52:18

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)