繁体   English   中英

使用PrepareStatement获取具有可配置表名的数据

[英]Using PrepareStatement to get data with configurable table name

我正在尝试使用java和jdbc驱动程序从Oracle 11.2获取一些数据。

我的目标是使用CallableStatement从数据库中获取数据,但没有运气-我无法将表名作为参数。 我想在查询中使用可配置的表名。 但是,最好保持消毒状态。

这是一个例子。

public void getData() throws SQLException {

    Connection conn = Config.getSQLConnection();
    String query = "SELECT * FROM ?";
    PreparedStatement st = conn.prepareStatement(query);
    st.setString(1, Config.DATATABLE_NAME);
    ResultSet rs = st.executeQuery();

    if (rs.next()) {
        System.out.println("SUCCESS");
        System.out.println("ID:" + rs.getString("ID"));
    } else {
        System.out.println("FAILURE");
    }
}

这是应该起作用的方式吗? 还是我遗漏了某些东西或滥用了它?

CallableStatement用于调用存储过程。

javadoc

用于执行SQL存储过程的接口

请使用PreparedStament进行常规选择。

另外请注意,请勿将表名称作为参数传递。 使用串联创建查询。

代替

String query = "SELECT * FROM ?";

采用

String query = "SELECT * FROM " + Config.DATATABLE_NAME;

您应该使用PreparedStatement而不是CallableStatement。 CallableStatement是用于调用存储过程的接口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM