Javaでmysqlを操作して、ファイルのパスをレコードに登録する方法
execute("update test_table set url = 'C:\test_mysql_java' where NO = 1;");
のように登録しようとしています。
ファイルの切れ目が「\」だとエラーが出てしまいます。(「/」ならOKでした)
executeの前に、文字の置き換えを試みましたが出来ませんでした。(「\」と「/」を入力しただけでエラー表示されます。)
eclipseを使用しています。
ご存じの方がおられましたら教えていただけませんでしょうか。
No.3ベストアンサー
- 回答日時:
execute("update test_table set url = 'C:\\\\test_mysql_java' where NO = 1;");
ではどうでしょうか。
Javaの文字列におけるエスケープとSQL文字列におけるエスケープが必要ですので2回エスケープする必要があります。
・Javaのエスケープシーケンス
http://www.site-cooler.com/java/j2se/06_02.htm#2
・MySQLのエスケープシーケンス
http://dev.mysql.com/doc/refman/4.1/ja/string-sy …
SQLのエスケープはDBMSによって仕様がことなるかもしれないため、MySQLから他のDBMSに変更する場合は注意してください。
(Oracleではエスケープ文字を任意に指定できたりとかしたはず)
この回答への補足
すみません。試してみましたが同じ結果となりました。
eclipseではパスを\ではなく/で記入しないとエラー表示になります。
getAbsolutePath()で\でコンソールに表示されるということは、
内部で\を/にかえる方法が分かれば解決すると思います。
\はエスケースシーケンスとしてソースは判断し、文字が消えると思います。
文字列の置き換えという発想ではなく、getAbsolutePath()内で行われているフォルダーのバッファリングの切れ目で/を挿入するという方法をとればいいのではないかと気がつきました。
この方法についてご存じでしたら教えてください。
よろしくお願いいたします。
No.2
- 回答日時:
Stringリテラル中において \ という文字は \\ で表す。
\t はタブ文字を表す。つまりStringリテラル中の C:\test_mysql_java という表記は質問者の思っていたものを多分表していない。
また、もし置換などで正規表現を使用しているなら、
\ をそういう文字として表すためには正規表現レベルでも \\ と表記しないといけないため、
Stringリテラルで表現された正規表現では \ という文字は \\\\ と書く必要がある。
この回答への補足
URL取り出すメソッドをjFileChooserTest.getSelectedFile().getAbsolutePath()で、コンソールに出力するとurlは\区切りです。
しかし、SLQを発行するメソッドexecuteInsertではレコードに登録されると\が無くなってしまいます。executeInsertの前にgetAbsolutePath()で得られたURLの\を/に文字置き換えをしても\は無くなってしまいます。(vaguechat様のご回答とおりにしても同じです。)
また、直接プロンプトでSQLを発行すると入力したとおり登録されます。
どのタイミングで\が消えているのかわからない状態です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Java dokojavaのコンパイルについて 1 2022/10/06 18:42
- iOS HDD交換修理したWindows10・PCのOFFICE プロダクトキーがエラーとなる 2 2023/04/01 02:17
- MySQL MySQLでcreateが使えない MySQLを使ってデータベースを作ろうと思い、CREATE を使 3 2022/06/19 15:32
- その他(Microsoft Office) Wordを変換してExcelに挿入 2 2022/07/04 23:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipseで、プロジェクト名のと...
-
シンボルが見つかりませんとい...
-
Javaのエラーについてです
-
JSP内でString型からint型に変...
-
演算子*はjava.lang.String.dou...
-
java.lang.StackOverflowErrort...
-
eclipseでのライブラリの追加に...
-
S2daoのSqlファイルでのDBア...
-
Eclipseで次のエラー箇所にジャ...
-
Eclipse デバッグ エラー処理
-
タグが閉じてないというエラー...
-
JSPで意味不明のコンパイルエラー
-
oracle java1.7でsignerエラー
-
(急募)Java 3回間違えたら強...
-
エラー:org.springframeworkが...
-
重複jarの調査の仕方
-
コンパイル時にエラーが出てし...
-
eclipseのエラーについて質問で...
-
eclipseでのsvn認証エラー回避方法
-
Antでのビルドにエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipseで、プロジェクト名のと...
-
シンボルが見つかりませんとい...
-
エラー:org.springframeworkが...
-
tomcat起動時エラー
-
Javaのエラーについてです
-
タグが閉じてないというエラー...
-
コンパイル時にエラーが出てし...
-
構文エラーのやり直しについて
-
eclipseをバージョンアップした...
-
eclipseでのsvn認証エラー回避方法
-
Eclipseで次のエラー箇所にジャ...
-
JBossについて
-
JSPの表示時エラー
-
「型 ArrayList は総称ではあり...
-
Win32コンソールアプリでnamesp...
-
Eclipseの環境について
-
致命的: StandardServer.await:...
-
javaw.exeプロセスが正常起動し...
-
getParameterについて
-
JSP内でString型からint型に変...
おすすめ情報