java - 将 Java 字符串转换为 PostreSQL 字符变化(«mpaa_rating»)?
问题描述
我正在编写一个 Java 方法,该方法根据 «rating» 列中的 «mpaa_rating» 数据类型在Postres 示例“DVD Rental”数据库表中搜索 «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:错误:运算符不存在:mpaa_rating = 字符变化”
和
“提示:没有运算符与给定名称和参数类型匹配。您可能需要添加显式类型转换。”
如何将 Java 字符串转换为 Postres 字符?
解决方案
我添加到我的 SQL 准备语句中的数据类型 «mpaa_rating» 的显式转换:
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
这会将复合类型转换为字符串类型。关于 casts的文档。
推荐阅读
- android - 当应用程序关闭时 fcm 通知的某些功能不起作用
- fish - 函数可以得到空参数吗?
- postgresql - TypeORM:[364] 错误:在字符 401 处缺少表“userorganisation”的 FROM 子句条目
- java - Spring Boot不调用UAT中的服务层
- ssl - 使用 openssl 指定生成的自签名证书的天数(到期日期)
- java - 在 for 循环 Java 中中断 while 循环
- typescript - 当返回类型成员具有联合类型时,从方法强制确定成员的返回类型
- swift4 - iOS RXSwift4 无法使用类型为“的参数列表”调用“绑定”(至:PublishRelay
)' - heroku - 仅在 Heroku 上播放 HTTPS 配置
- python-2.7 - 动态加载模块并在该模块中动态调用函数;蟒蛇 2.7