1

SQL Serverストアドプロシージャを呼び出す以下のようなコードがあります

名には、電子邮箱のような値が渡されます

sCmd.Parameters.Add("@FName", SqlDbType.NVarChar);
sCmd.Parameters.Add("@LName", SqlDbType.NVarChar);

sCmd.Parameters["@FName"].Value = firstname;
sCmd.Parameters["@LName"].Value = lastname;

ストアド プロシージャの場合:

@FName nvarchar(200),
@LName nvarchar(200)

INSERT INTO [dbo].[testunicode]
       ([col1]
       ,[col2])
VALUES
       (@FName
       ,@LName);

しかし、データは ???? として挿入されます。テーブルの列でさえNVarchar(max)です。

ストアドプロシージャに渡す前に「N」を追加してみました。また、以下も試しました。しかし、それでも同じです。そうする最善の方法は何ですか?

  Encoding tc = Encoding.GetEncoding("BIG5");
  byte[] bytes = tc.GetBytes(firstname);
  firstname = Encoding.Unicode.GetString(bytes)
4

1 に答える 1

0

Spに渡す前に「N」を追加してみました

.NET String は Unicode をサポートし、Unicode を処理するため、必要ありません。データベースに渡されるリクエストを見ると、N'が自動的に付加されることがわかります。

そうする最善の方法は何ですか。

あなたはそれを正しくやっています。他のものを渡す必要はありません。

しかし、データは ???? として挿入されます。

テーブルのデータ型を確認してください。それは本当にNVarCharですか?

于 2013-08-15T12:47:15.200 に答える