質問

以下のSQLクエリーを使用 PreparedStatement クラス:

String query_descrip = "insert into timitemdescription (itemkey, languageid, longdesc, shortdesc) values (?, 1033, ?,?)";
PreparedStatement pstmt2 = con.prepareStatement(query_descrip); 
pstmt2.setInt(1, rs4);
pstmt2.setString(2, itemdescription);
pstmt2.setString(3, itemdescription.substring(0,39));
pstmt2.executeUpdate();       

ことがありまアポストロフィとシングル、ダブルクォートで私の項目の内容に更新しました。例えば、私の故の問題につ目は"平面22"モニター.もちろん、文字列のた誤解を招くおそれの考えを説明しただけで"平面22".には、どうするのがベストな対応特殊文字は文字列?

このまま一部の人に使regexしかし、これらが特定のケースです。うように、文字列配列文字による文字です。つくろうと思いましたが、より効率的に少ない資源集約的な方法を行っています。

UPDDATE その後のより広範な試験であった問題の庭には私のコードです。れていなかったものでURLエンコーディングの問題です。きるhtmlのフォームされた人口によるjspのコードでう、説明欄にオンライン形式でtruncatesであるのではなく返します。jTDSも修正の問題の特殊文字です。でjTDSは、jarでも回避さを再起動機です。またjTDSスレッドの恵みをそのついていないのがちょっと部分的に使用します。

かまいません。

役に立ちましたか?

解決

あなたはPreparedStatementを使用しているので、あなたはそれがJDBCドライバによって自動的に処理されますが、まったく何もする必要はありません。あなたが外を見るために持っている唯一のことは、特にあなたがDBのテーブルは、使用しようとしているすべての文字を扱うことができるテキストの列のエンコーディングを使うことを確認する必要があり、非ASCII文字です。しかし、それはSQLの問題ではなく、Javaの問題です。

他のヒント

あなたはPreparedStatementのパラメータとしてそれらを結合している場合は、

あなたがやっているように、特別にこれらの文字を処理する必要はありません。これは、準備文のアプローチの主な利点の一つです。

他の人が言ってきた

のように、あなたは、特殊文字を処理するために何もする必要はありません。あなたは、異なるJDBCドライバを試してみる必要があります。

のjTDSドライバを使用してみてください、それはあなたのPreparedStatementであなたを助けている場合参照してください。これは、SQL Serverのためのオープンソースのデータベースドライバです。私は今、仕事でそれを使用し、それはチャンピオンのように動作し、実際にMSのドライバとは異なり、JDBC仕様に準拠しています。

私はかなり特定の問題なのコードで掲載しています。にトラブルシューティング:

  1. また、コードを実行するスニペットの上でデバッガ?何の価値"itemdescription"を渡ししますので、データベース電話のかけ方は?
  2. かを実際に確認すること値のデータベース?このJavaコードについて教えてください。やまみでSQLCMDはいそうですよね。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top