none
vb.net & sql server 2005多國語語言的問題 RRS feed

  • 問題

  • 各位高手:

            我目前正著手開發一套中日文軟體,使用的工具如下:

    • 作業系統版本-Windows XP
    • 開發工具版本-Visual Studio 2005 & SQL Server 2005 Express 
    • 開發環境-Windows Form
    • 狀況描述-發現若輸入日文資料後,利用程式查詢不到輸入內容,即使資料庫表單欄位的Collation設為Japanese_90仍無法查詢,我使用stored procedure 如下
    • insert into TABLE values(變數1,變數2.......),在unicode的設定下,是否要加入N' 變數1'的寫法?
    2007年8月29日 上午 08:34

解答

  • 你的欄位最好是設定支援 Unicode 的型別,例如 nvarchar, ntext, nchar 等,在 SQL 指令中使用 N,是強制轉換資料為 Unicode 型別所用 .

     

    2007年8月31日 上午 10:01
    版主

所有回覆

  • 你的欄位最好是設定支援 Unicode 的型別,例如 nvarchar, ntext, nchar 等,在 SQL 指令中使用 N,是強制轉換資料為 Unicode 型別所用 .

     

    2007年8月31日 上午 10:01
    版主
  • 謝謝您的回應

    不過資料表欄位我都是設nvarchar

    而sql語法則是以stored procedure方式儲存

    至於您提到加上N...,可否說明是在 stored procedure的insert 語法中

    還是在程式中輸入資料後儲存資料時,

    由於以變數方式執行, 可否給個範例參考

     

    感謝

    2007年9月1日 下午 01:07
  • 當然是在 stored procedure 中的 SQL 指令使用 ...

     

    2007年9月1日 下午 01:08
    版主
  • ALTER PROCEDURE dbo.TBInsert
    (
     N'@tname' nvarchar(50),
     N'@tposstart' nvarchar(50),
     @tposend nvarchar(50),
     @tid nvarchar(20)
    )
    AS
     SET NOCOUNT OFF;
    INSERT INTO [TBase] ([tname], [tposstart], [tposend], [tid]) VALUES (N'@tname', N'@tposstart', @tposend, @tid);
     

    但不論是在變數宣告區或是輸入區加入N' ' ,似乎都不對

    請教應如何修改才對

    2007年9月1日 下午 02:02
  • 參數區不能加 N ...

    你先用一般 SQL 指令試看看,如果一般 SQL 可以,再來看要如何改 stored procedure.

    2007年9月1日 下午 04:44
    版主
  • :::參考看看

    ALTER PROCEDURE dbo.TBInsert
    (
     @tname nvarchar(50),
     @tposstart nvarchar(50),
     @tposend nvarchar(50),
     @tid nvarchar(20)
    )
    AS
     SET NOCOUNT OFF;
    INSERT INTO [TBase] ([tname], [tposstart], [tposend], [tid]) VALUES (@tname, @tposstart, @tposend, @tid);

     

    2007年9月2日 上午 04:12