sql
  • visual-studio-2008
  • sql-server-2005
  • character-encoding
  • 2011-01-17 5 views 0 likes 
    0

    すべての種類の外来文字を含むDBから用語をインポートしています。日本語の文字や中国語を使っているときは、条件に合致しないため、テーブルの更新ステートメントを実行できません。.netのテキストエンコーディング

    sqlUpdate = "Update QueryData set LastSearchDate ='" & DateTime.Now.ToString & "'" & " 
    
    where QueryTerms = '" & item & "'" 
    

    は、検索用語であり、日本語以外のすべての文字については正常に動作します。今私はSQL Server 2005でそれをした場合、一致を見つけるために用語の前にNを置く必要があります。

    select * from QueryData where queryTerms =N'だしの素' 
    

    私は、クエリを実行する前にそれをエンコードすることができるか、そこには、.NETがあり でNと同等になるようにするためにさらに簡単な方法を.NETでの文字列のエンコーディングをチェックする方法はありますこれを処理する。

    +0

    データベースのエンコーディングはどのように設定されていますか? –

    +0

    querytermsの列がnvarcharで、照合順序がsql-latin1 – vbNewbie

    答えて

    2

    ここでパラメータ化されたクエリを使用すると、SQLインジェクション攻撃に脆弱ではないだけでなく、問題を簡単に分類できます。データ(クエリ値)をコード(SQL)から遠ざけてください。すべての種類の問題を避けるためにすべてを文字列として表現する必要はありません。

    パラメータ化されたクエリの使用例については、SqlCommand.Parametersのドキュメントを参照してください。

    +0

    答えがないことを知りたければ、私は答えるように誘惑されましたが、「私はJonにこのことをとらせます」と考えました。 – Bergius

    +0

    @Bergius:あなたは一度も知りません...誰かがこのような質問をするでしょう(あるいはパラメータを渡すときに)*私は返信しないと決めます*。たぶん私は外に出て、新鮮な空気や何かを飛び越えて、ブロードウェイショーを盛り上げて、現代人の足かせを捨てるのに合流するように通行人を励ますかもしれない。 –

    +0

    私はそれを試してみましょう、ありがとう、返信する – vbNewbie

    関連する問題