Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Không thể sử dụng truy vấn LIKE trong Câu lệnh chuẩn bị sẵn của JDBC?

Đầu tiên, PreparedStatement trình giữ chỗ (những ? thứ) dành cho giá trị cột chỉ, không dành cho tên bảng, tên cột, hàm / mệnh đề SQL, vân vân. Sử dụng tốt hơn String#format() thay thế. Thứ hai, bạn không nên trích dẫn các trình giữ chỗ như '?' , nó sẽ chỉ làm sai định dạng truy vấn cuối cùng. PreparedStatement setters đã thực hiện công việc trích dẫn (và thoát) cho bạn.

Đây là SQL cố định:

private static final String SQL = "select instance_id, %s from eam_measurement"
    + " where resource_id in (select RESOURCE_ID from eam_res_grp_res_map where"
    + " resource_group_id = ?) and DSN like ? order by 2");

Đây là cách sử dụng nó:

String sql = String.format(SQL, "SUBSTR(DSN,27,16)"); // This replaces the %s.
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, defaultWasGroup);
preparedStatement.setString(2, "%Module=jvmRuntimeModule:freeMemory%");

Xem thêm :

  • Hướng dẫn của Sun JDBC:Sử dụng câu lệnh soạn sẵn
  • Định dạng cú pháp chuỗi


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm độ dài của hàng dài nhất trong một cột trong oracle

  2. Thứ tự thực thi các điều kiện trong mệnh đề SQL 'where'

  3. dừng lỗi biên dịch trong tập lệnh sqlplus

  4. Oracle, Đặt ngày giờ thành ngày đầu tiên của tháng

  5. Hàm RAWTOHEX () trong Oracle