我正在尝试执行一个查询,该查询返回一个名和姓串联在一起的学生,该名与搜索键参数相等。
为此,我在班级中管理与Student
班级数据库相关的任何事情。
执行查询时,出现以下错误:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:
怎么了?我已经检查过这是正确的使用方法 concat
。
name
并且lastName
是VARCHAR
在MySQL数据库中。
public static Student findStudent(String key) {
if (key == null) return null;
PreparedStatement preparedStatement = null;
ResultSet rs = null;
String selectSQL = "select * from project.students where concat(name, lastName) = ? ;";
try {
dbConnection = getDBConnection();
preparedStatement = dbConnection.prepareStatement(selectSQL);
preparedStatement.setString(1, key);
Student student = null;
rs = preparedStatement.executeQuery(selectSQL);
if (rs.next()) {
StudentDB.setStudentAttributes(student, rs);
}
return student;
} catch(SQLException e) {
e.printStackTrace();
} finally {
close();
try {
if (preparedStatement != null) preparedStatement.close();
if (rs != null) rs.close();
} catch(SQLException e) {
e.printStackTrace();
}
}
return null;
}
您的问题是您准备的陈述
preparedStatement = dbConnection.prepareStatement(selectSQL);
正确,但是当您尝试执行PreparedStatement时,将selectSQL
再次提供该字符串:
rs = preparedStatement.executeQuery(selectSQL);
那是不对的。您已经准备好该语句,因此当需要执行该语句时,您只需执行
rs = preparedStatement.executeQuery();
当我试图执行这条语句时,出现了错误。我创建了一个包含表名的数组mem[],每个表中有两列,分别是amt(float(9,2))和comb(varchar(5))。 我在for循环中使用了这个语句: 错误: 通用域名格式。mysql。jdbc。例外情况。jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解在第1行“akhi
问题内容: 为了使我们的代码更加标准,我们被要求更改将SQL变量硬编码为预处理语句的所有位置,然后绑定这些变量。 但是我遇到了问题。 这是代码: 我在执行SQL时收到此错误: 我应该改为使用? 问题答案: Using 使用 如果您的表的列类型为: 该方法接收到一个字符串,该字符串表示格式为日期的日期。例如: 假设您有一个type类型的变量,则可以这样进行转换: 当前的 如果要插入当前日期: Usi
为了使我们的代码更加标准,我们被要求将所有我们将SQL变量硬编码为准备好的语句的地方改为绑定变量。
问题内容: 我在我们的代码库上运行了findbugs,它指出还有两个语句仍需要关闭。在代码的这一部分中,我们运行: 3个不同的查询,重用prepareStatement。在finally块中,我们确实关闭了资源: 应该在下一个连接之前关闭该语句。prepareStatement(query); 还是这个findbug谨慎? 问题答案: 是的,在执行下一个connection.prepareStat
问题内容: 为了使我们的代码更加标准,我们被要求更改将SQL变量硬编码为预处理语句的所有位置,然后绑定变量。 但是我遇到了问题。 这是代码: 执行SQL时出现此错误: 我应该改为使用? 问题答案: 使用 java.sql.Date 如果表中的列类型为DATE: 该方法接收到一个字符串,该字符串代表格式的日期。例如: 假设你有一个类型的变量,则可以这样进行转换: 当前 如果要插入当前日期: 使用 j
问题内容: 有人可以解释如何使用完全准备好的使用dbcp的连接池吗?(如果可能,请提供一些示例代码)。我已经弄清楚了如何打开它- 将KeyedObjectPoolFactory传递给PoolableConnectionFactory。但是,那之后如何定义特定的准备好的语句呢?现在,我仅使用PoolingDataSource从池中获取连接。如何使用池中准备好的语句? 问题答案: 在谈论从池中获得连接