0

アプリケーションからドキュメントを開く必要があるアプリケーションを開発しています。ファイルのパスを sql データベースに保存する必要があります。ファイル パスが挿入される sql の列の型は VARCHAR(255) です。

ファイルのパスが の場合、C:\Users\UPS21120\Downloads\doc1.pdfデータベースに次のように保存されますC:UsersUPS21120Downloadsdoc1.pdf(保存されたパスのバックスラッシュはどこにありますか?)。

このパスを取得してファイルを開くdoc1.pdf、doc1 が存在しないという例外が発生します。以下は、パスを保存するために使用したコードです。助けてください。

      JFileChooser fc = new JFileChooser(); 
      returnVal = fc.showOpenDialog(view_doc.this);
      File file1=fc.getSelectedFile();

      if (returnVal == JFileChooser.APPROVE_OPTION) {
      String str = "INSERT INTO document(doc_path) VALUES ('"+file+"')";
                  // open connection..execute query etc--works fine

      }
4

3 に答える 3

1

Javaで文字列をエスケープするには

http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/StringEscapeUtils.html

Java String 規則を使用して String 内の文字をエスケープします。... 引用符と制御文字 (タブ、バックスラッシュ、cr、ff など) を正しく処理します。

于 2013-02-08T08:31:07.067 に答える
1

データベースに挿入する前に、挿入する値をエスケープする必要があります。または、それを行う準備済みステートメントを使用することもできます。

参照: Java - SQL インジェクションを防ぐためのエスケープ文字列

于 2013-02-08T08:29:24.780 に答える
0

最も簡単な解決策は、 in path/の代わりに使用することです。\次に、パス文字列をデータベースに簡単に挿入できます。エラーは発生しません。また、Javaはパスを使用できます/

于 2013-02-08T09:05:19.860 に答える