ParameterMetaData的使用

ParameterMetaData pmd =   preparedStatement.getParameterMetaData();

通过 ParameterMetaData可以获得参数信息。

public class ParameterMetaTest {

    public static void main(String[] args) throws SQLException {

       Object[] params = new Object[] { "lisi", 100f };

       read("select * from user where name=? and  money > ?", params);

    }

 

    static void read(String sql, Object[] params) throws SQLException {

       Connection conn = null;

       PreparedStatement ps = null;

       ResultSet rs = null;

       try {

           conn = JdbcUtils.getConnection();

           ps = conn.prepareStatement(sql);

//         ParameterMetaData pmd = ps.getParameterMetaData();

//         int count = pmd.getParameterCount();

//通过ParameterMetaData查看参数的个数其实它也等于params数组的大小

           for (int i = 1; i <= params.length; i++) {

              // System.out.print(pmd.getParameterClassName(i) + "\t");

              // System.out.print(pmd.getParameterType(i) + "\t");

              // System.out.println(pmd.getParameterTypeName(i));

              ps.setObject(i, params[i - 1]);

           }

           rs = ps.executeQuery();

           while (rs.next()) {

              System.out.println(rs.getInt("id") + "\t"

                     + rs.getString("name") + "\t" + rs.getDate("birthday")

                     + "\t" + rs.getFloat("money"));

           }

       } finally {

           JdbcUtils.free(rs, ps, conn);

       }

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
非常抱歉,我之前的回答有误。在Oracle的PreparedStatement中,确实没有提供直接获取参数值的方法。要打印PreparedStatement的参数值,你可以使用getParameterMetaData()方法获取参数的元数据,并通过getString()、getInt()等方法根据参数类型来获取参数值。 以下是一个示例代码片段,展示了如何打印PreparedStatement的内容: ```java PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM my_table WHERE id = ?"); preparedStatement.setInt(1, 123); ParameterMetaData parameterMetaData = preparedStatement.getParameterMetaData(); int parameterCount = parameterMetaData.getParameterCount(); System.out.println("Prepared statement SQL: " + preparedStatement.toString()); for (int i = 1; i <= parameterCount; i++) { int parameterType = parameterMetaData.getParameterType(i); String parameterTypeName = parameterMetaData.getParameterTypeName(i); Object value; if (parameterType == Types.INTEGER) { value = preparedStatement.getInt(i); } else if (parameterType == Types.VARCHAR) { value = preparedStatement.getString(i); } else { value = preparedStatement.getObject(i); } System.out.println("Parameter " + i + " - Type: " + parameterTypeName + ", Value: " + value); } ``` 在这个示例中,我们首先创建了一个PreparedStatement对象,并设置了一个参数值。然后,通过调用getParameterMetaData()方法获取参数的元数据。接下来,我们使用getParameterType()方法获取参数的类型,并根据参数类型使用getInt()或getString()等方法来获取参数值。最后,我们将参数的类型和值打印到控制台上。 请注意,这只是一个简单的示例,实际使用时可能需要根据自己的需求进行适当的修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值