【问题标题】:Printing the PreparedStatement in postgreSQL driver在 postgreSQL 驱动程序中打印 PreparedStatement
【发布时间】:2013-08-26 08:31:42
【问题描述】:

我需要一种方法来查看从我的 Java 程序发送到 PostgreSQL 的查询。我正在使用c3p0 JDBC 连接池来获取连接。当我在 PreparedStatement 上使用toString 方法时,它给了我

com.mchange.v2.c3p0.impl.NewProxyPreparedStatement@577b57a3 

我的代码:

public void readData1() {
    Connection con = null;
    try
    {
        con = DatabaseFactory.getInstance().getConnection();
        con.setAutoCommit(false);
        java.sql.Timestamp ts= new java.sql.Timestamp(new java.util.Date().getTime());
        String query= "INSERT INTO TEST_DATA values(?,?,?)";
        PreparedStatement stmt = con.prepareStatement(query);
        stmt.setDate(1,new java.sql.Date(System.currentTimeMillis()));
        stmt.setInt(2, 100);
        stmt.setTimestamp(3,ts );
        System.out.println(stmt.toString());
        stmt.executeUpdate();
        con.commit();
        stmt.close();

    }
    catch (Exception e)
    {
        System.out.println("Could not read from DB, error: "+e.getMessage());
        e.printStackTrace();
    }
    finally
    {
        try { con.close(); } catch (Exception e) {}
    }

}

有人可以帮我如何从 PreparedStatement 中获取 sql 查询吗?

谢谢

【问题讨论】:

    标签: java jdbc connection-pooling postgresql-9.1 c3p0


    【解决方案1】:

    如果您使用的是 c3p0-0.9.5 的预发布版本,您可以尝试...

    System.out.println(stmt.unwrap(PreparedStatement.class).toString());
    

    可能你不是,所以你可以试试这个......

    printInnerStatement( (C3P0ProxyStatement) stmt );
    

    与...

    import com.mchange.v2.c3p0.*;
    
    static void printInnerStatement( C3P0ProxyStatement stmt )
    {
       java.lang.reflect.Method m = java.io.PrintStream.class.getMethod("println", new Class[]{Object.class});
       stmt.rawStatementOperation(m, System.out, new Object[]{ C3P0ProxyStatement.RAW_STATEMENT });
    }
    

    要了解这里发生了什么(并纠正我不可避免地犯的错误),请参阅Raw Connection and Statement Operations

    【讨论】:

    • 有没有办法可以在字符串中获取 sql 查询?
    猜你喜欢
    • 2021-05-15
    • 2017-12-16
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2013-10-25
    • 2015-11-02
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多