1

私の Java プログラムは、テキスト フィールドからファイル パスを収集します。

pathField.getText();

結果をデータベース (phpMyAdmin) に挿入します。ただし、バックスラッシュ()は含まれていないようです。EG - C:UsersSteveDesktop

データベースの FilePath フィールドは "Text" に設定されています。ステートメントでテストしたpathField.getText()ところSystem.out、バックスラッシュ付きで出力されます。

Statement st = (Statement) conn.createStatement();

            String query_to_update = "INSERT INTO `evidence_db`.`mcases` ("
                    + "`PID`,"
                    + " `FilePath`) "
                    + "VALUES ("
                    + "DEFAULT,"
                    + " '" + pathField.getText() + "');";

            System.out.println("Query: " + query_to_update);

            int val = st.executeUpdate(query_to_update);

上記のコードを編集したため、軽微なエラーがある可能性があることに注意してください。

4

1 に答える 1

3

この種のエラーを回避するには、準備済みステートメントを使用する必要があります

public static void main(String args[]) {

  Connection con = null;
  PreparedStatement pst = null;
  ResultSet rs = null;

  try {

  Class.forName(driver);
  con = DriverManager.getConnection(connection);

  String sql =
  "select * from Employees where FirstName " + "in(?,?,?)";
  pst = con.prepareStatement(sql);

  pst.setString(1, "komal");
  pst.setString(2, "ajay");
  pst.setString(3, "santosh");

  rs = pst.executeQuery();
  System.out.println("EmployeeID\tFirstName");
  while (rs.next()) {
  System.out.print("  "+rs.getString(1));
  System.out.print("\t\t"+rs.getString(2));
  System.out.println("\t\t"+rs.getString(3));
  }

  } catch (Exception e) {
  System.out.println(e);
  }
  }
} 

だからあなたの場合

String query_to_update = "INSERT INTO `evidence_db`.`mcases` ("
                    + "`PID`,"
                    + " `FilePath`) "
                    + "VALUES (?,?);";

PreparedStatement pst=coneection.prepareStatement(query_to_update);
pst.setString(1,"DEFAULT");
pst.setString(2,pathField.getText());
pst.executeUpdate();
于 2012-12-14T17:05:42.770 に答える