将 Java 字符串转换为 PostgreSQL 字符变化 («mpaa_rating»)?
Convert Java String to PostreSQL character varying («mpaa_rating»)?
我正在编写一个 Java 方法,根据 «rating» 列中的 «mpaa_rating» 数据类型搜索 the Postres sample 'DVD Rental' database table «films»。
public static void rechercheRating() {
System.out.println("======= Ratings menu =========");
System.out.println("\t 'G' ");
System.out.println("\t 'PG' ");
System.out.println("\t 'PG-13' ");
System.out.println("\t 'R' ");
System.out.println("\t 'NC-17' ");
System.out.println("Entrez le rating désiré :");
String userInput = sc.nextLine().toUpperCase();
try {
int foovalue = 10;
PreparedStatement st = conn.prepareStatement("SELECT title, rating FROM film WHERE (rating = ?);");
st.setString(1, userInput);
ResultSet rs = st.executeQuery();
System.out.printf("%-20s %-15s\n", "Film", "Rating");
while (rs.next()) {
System.out.printf("%-20s %-15s\n", rs.getString(1), rs.getString(2));
}
rs.close();
st.close();
} catch (SQLException ex) {
Logger.getLogger(DVDrental.class.getName()).log(Level.SEVERE, null, ex);
}
}//rechercheRating
问题是 «mpaa_rating» 不是字符串数据类型。我在 IDE 中遇到的错误是
"org.postgresql.util.PSQLException: ERROR: operator does not exist:
mpaa_rating = character varying"
和
"Hint: No operator matches the given name and argument type(s). You
might need to add explicit type casts."
如何将 Java 字符串转换为不同的 Postres 字符?
数据类型 «mpaa_rating» 的显式转换我添加到我的 SQL 准备语句中:
public static void rechercheRating() {
System.out.println("======= Ratings menu =========");
System.out.println("\t 'G' ");
System.out.println("\t 'PG' ");
System.out.println("\t 'PG-13' ");
System.out.println("\t 'R' ");
System.out.println("\t 'NC-17' ");
System.out.println("Entrez le rating désiré :");
String userInput = sc.nextLine().toUpperCase();
try {
int foovalue = 10;
PreparedStatement st = conn.prepareStatement("SELECT title,
rating FROM film WHERE (rating = ?::mpaa_rating);"); //added cast
st.setString(1, userInput);
ResultSet rs = st.executeQuery();
System.out.printf("%-20s %-15s\n", "Film", "Rating");
while (rs.next()) {
System.out.printf("%-20s %-15s\n", rs.getString(1), rs.getString(2));
}
rs.close();
st.close();
} catch (SQLException ex) {
Logger.getLogger(DVDrental.class.getName()).log(Level.SEVERE, null, ex);
}
}//rechercheRating
这会将复合类型转换为字符串类型。
documentation on casts.
我正在编写一个 Java 方法,根据 «rating» 列中的 «mpaa_rating» 数据类型搜索 the Postres sample 'DVD Rental' database table «films»。
public static void rechercheRating() {
System.out.println("======= Ratings menu =========");
System.out.println("\t 'G' ");
System.out.println("\t 'PG' ");
System.out.println("\t 'PG-13' ");
System.out.println("\t 'R' ");
System.out.println("\t 'NC-17' ");
System.out.println("Entrez le rating désiré :");
String userInput = sc.nextLine().toUpperCase();
try {
int foovalue = 10;
PreparedStatement st = conn.prepareStatement("SELECT title, rating FROM film WHERE (rating = ?);");
st.setString(1, userInput);
ResultSet rs = st.executeQuery();
System.out.printf("%-20s %-15s\n", "Film", "Rating");
while (rs.next()) {
System.out.printf("%-20s %-15s\n", rs.getString(1), rs.getString(2));
}
rs.close();
st.close();
} catch (SQLException ex) {
Logger.getLogger(DVDrental.class.getName()).log(Level.SEVERE, null, ex);
}
}//rechercheRating
问题是 «mpaa_rating» 不是字符串数据类型。我在 IDE 中遇到的错误是
"org.postgresql.util.PSQLException: ERROR: operator does not exist: mpaa_rating = character varying"
和
"Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts."
如何将 Java 字符串转换为不同的 Postres 字符?
数据类型 «mpaa_rating» 的显式转换我添加到我的 SQL 准备语句中:
public static void rechercheRating() {
System.out.println("======= Ratings menu =========");
System.out.println("\t 'G' ");
System.out.println("\t 'PG' ");
System.out.println("\t 'PG-13' ");
System.out.println("\t 'R' ");
System.out.println("\t 'NC-17' ");
System.out.println("Entrez le rating désiré :");
String userInput = sc.nextLine().toUpperCase();
try {
int foovalue = 10;
PreparedStatement st = conn.prepareStatement("SELECT title,
rating FROM film WHERE (rating = ?::mpaa_rating);"); //added cast
st.setString(1, userInput);
ResultSet rs = st.executeQuery();
System.out.printf("%-20s %-15s\n", "Film", "Rating");
while (rs.next()) {
System.out.printf("%-20s %-15s\n", rs.getString(1), rs.getString(2));
}
rs.close();
st.close();
} catch (SQLException ex) {
Logger.getLogger(DVDrental.class.getName()).log(Level.SEVERE, null, ex);
}
}//rechercheRating
这会将复合类型转换为字符串类型。 documentation on casts.