- 締切済み
><や(1)等をDBに登録したい
初めまして。 突如業務でMySQLを使用することとなりました。 いきなり障害対応と言うことなのですが、探してみても良くわからなかったのでお手数ですが、ご教示お願い致します。 障害管理の情報をデータベースに格納しているのですが、<や(1)などの特殊文字を入力した場合入力できず終了してしまいます。 恐らく何かに置き換えなければならないのだろうということはわかるのですが、具体的にどのような文字(例えば他に%&"'がダメとか)ダメなのか、そして置き換える方法を教えていただけませんでしょうか? MySQLはVer1.4を使用しています。 開発はJavaとJSP上で行っています。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- chukenkenkou
- ベストアンサー率43% (833/1926)
当方、MySQL 5.0.19-ntというバージョンを使用しています。 MySQL Command Line Client、phpMyAdminでテストした限りでは、text型に「<」や「(1)」が格納できないといったことはありません。 >、「登録」ボタンを押しても登録されず、そのまま >通常登録後に表示されるページに遷移してしまうのです 何らかのアプリケーションを、使っているのですよね? そのアプリケーションで、特定の文字(文字コード)の場合に、格納処理が行われないといったことはないのでしょうか? 少なくとも、MySQLから何らかのエラーが返されている訳ではないのですよね?
- chukenkenkou
- ベストアンサー率43% (833/1926)
><や(1)などの特殊文字を入力した場合入力できず終了 使用している文字コードは、何ですか? 列のデータ型は、何ですか? 「入力できず終了」って、クライアントソフトは、何ですか? 「終了してしまう」とは、具体的にどうなるのですか? 文字コード=SJIS、MySQL Command Line Clientを使用していますが、varchar列に問題なく格納できますよ? >MySQLはVer1.4 4.1の誤りですか?
補足
>>MySQLはVer1.4 >4.1の誤りですか? すみません、MySQlのコントロールパネルのところ見たらVersion1.4と書いていたのでこれがバージョン番号かと思いました。 4.0.18だそうです。 使用している文字コードはSJIS、データの型はtextです。 varcharと言う型を使えば登録できるのでしょうか? >「入力できず終了」 普段であれば情報入力して「登録」ボタンを押すと、データが格納され、登録したデータを閲覧する事が出来るのですが、(1)等を入れた場合は、「登録」ボタンを押しても登録されず、そのまま通常登録後に表示されるページに遷移してしまうのです。 IE等のwebブラウザーから閲覧していますが、IE自身は終了しません。 言葉足らずで申し訳ありません。宜しくお願いします。
お礼
ダブルコーテーションやセミコロンなどはPreparedStatementを使用して登録する事が出来るようになりました。 機種依存文字は文字コードに変換して確認を行い、該当する文字コードならエラー表示で登録できないようにしようと思います。 ありがとうございました。
補足
今、書き込みをよく見たら(1)に置き換わっちゃってますが、実際登録しようとしている文字は1に○がついている、所謂機種依存文字です。 あとダブルコーテーションが登録できないと言う報告も受けています。 アプリケーションはJDBCにて現在自作しているものです。 アプリケーション自身が文字を判別し終了させているわけでは無く、 state.executeUpdate ("insert into database set segment=\"" + segment + "\",summary=\"" + summary + "\", response=\"" + resp + "\",note=\"" + note + "\""); で、格納処理を行っているだけのようです。 例外時の処理は特に行っていないため、見た目的に >、「登録」ボタンを押しても登録されず、そのまま >通常登録後に表示されるページに遷移してしまうのです と言う状況になっています。 宜しくお願いします。