java - 应该在哪里?放在PreparedStatement中?

标签 java mysql sql jdbc prepared-statement

<分区>

我正在使用 PreparedStatement 从表中选择记录:

public static String getMemberInfo(String columnName, Integer memberId) {       
    String memberInfo = "";
    String sql = "SELECT ? FROM member WHERE member_id = ?";
    DatabaseConnector.setConn();

    try(Connection conn = DatabaseConnector.getConn();
        PreparedStatement ps = conn.prepareStatement(sql)) {

        ps.setString(1, columnName);
        ps.setInt(2, memberId);

        try(ResultSet rs = ps.executeQuery()) {
            if(rs.next()) {
                memberInfo = rs.getString(columnName);
            }
        }

    } catch(SQLException se) {
        se.printStackTrace();
    }

    return memberInfo;
}

当我使用 SELECT "+ columnName + "FROM member WHERE member_id = ?,有效。

但是当我使用 选择? FROM member WHERE member_id = ?,它没有。

应该将 ? 放在准备好的语句中的什么位置?

最佳答案

?用于输入值(通常在 WHERE 子句条件中)。

?不适用于选定的列。

关于java - 应该在哪里?放在PreparedStatement中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30702373/

相关文章:

sql - 选择类型为 'x'的所有记录最高为 'version'

java - 如何使用 assertJ 递归地比较忽略给定字段?

SELECT 之后加入 Mysql

mysql - 如何通过一对多关联日期进行排序并获得良好的性能?

mysql - mysql查询中的多表内连接

php - 使用 PHP 从 Mysql 发送 Json 数据

java - Spark Mongo DB 连接器 - 未找到类定义

java - 如何将 ISO 8601 日期(字符串)转换为日期?

Java在派生类中实现接口(interface)方法的方式

mysql - 如何处理动态sql查询中的null