toString()可以看到,而且还有一些其它的东西,不只是sql语句

解决方案 »

  1.   

    直接通过PreparedStatement类是取不到的。帮楼主up吧,能不能用其中折中的办法来解决。
      

  2.   

    package com.sunnitech.DBConnect;import java.sql.*;public class DBConnect {
        public static void main(String args[]) {
            Connection conn = null;        String driver = "com.mysql.jdbc.Driver";
            String url = "jdbc:mysql://192.168.18.202:3306/test";
            String user = "root";
            String pwd = "";        try {
                Class.forName(driver).newInstance();
                conn = DriverManager.getConnection(url, user, pwd);            String del = "delete from test";
                Statement st = conn.createStatement();
                st.executeUpdate(del);            String sql = "insert into test values(?,?)";
                PreparedStatement prst = conn.prepareStatement(sql);
                prst.setString(1, "\"");
                prst.setString(2, "2005-01-24 12:12:12");
                prst.executeUpdate();
                
                System.out.println(prst.toString());
                
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("select * from test");            while(rs.next()) {
                    System.out.println(rs.getString(1) + "\n" + rs.getDate(2));
                }
            } catch(Exception e) {
                System.out.println("Error: " + e.toString());
            }        System.out.println("Finished!");
        }
    }以上小程序输出为:
    com.mysql.jdbc.ServerPreparedStatement[1] - insert into test 
    values('\"','2005-01-24 12:12:12')"
    2005-01-24
    Finished!
      

  3.   

    System.out.println(prst.toString());
    对应的内容为
    com.mysql.jdbc.ServerPreparedStatement[1] - insert into test values('\"','2005-01-24 12:12:12')
      

  4.   

    toString()的话, 不同JDBC DRIVER实现是不一样的,用ORACLE的话好像就打不出来了~~
      

  5.   

    用ResultSetMetaData,这个接口可以获取列名、列类型、长度、精度;
    下面是一个例子,虽然使用Statement,但是对于PrepareStatement也是一样的
    /**
     * DBTest.java
     * 注意:这个程序没有对异常做处理
     */
    import java.sql.*;
    public class DBTest {
        public static void main(String args[]) throws Exception {        // 1. register db driver
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();        // 2. get connection
            String url = "jdbc:odbc:ora238";
            String user = "callcenter";
            String pwd = "callcenter";
            Connection conn = DriverManager.getConnection(url, user, pwd);        // 3. create statement
            Statement stmt = conn.createStatement();
            
            // 4. execute sql
            String sql = "select * from H1_BUSINESS_NOTIFY_TAB";
            ResultSet rs = stmt.executeQuery(sql);
            
            // 5. get meta data
            ResultSetMetaData rsMetaData = rs.getMetaData();
            
            // 6. show column name
            int columnCount = rsMetaData.getColumnCount();
            System.out.println("Total " + columnCount + " columns.");
            // 注意下面的循环是从1开始
            for (int i=1; i<=columnCount; ++i) {
                System.out.print(rsMetaData.getColumnName(i));
                System.out.print('\t');
            }
            System.out.println();        // 7. show result data
            while (rs.next()) {
                // 注意下面的循环是从1开始
                for (int i=1; i<=columnCount; ++i) {
                    System.out.print(rs.getString(i));
                    System.out.print('\t');
                }
            }
            
            // 8. release resource
            rs.close();
            stmt.close();
            conn.close();
        }
    }
      

  6.   

    哈哈 竟然有这么多人对这个问题进行讨论,没关系的 我回去看看PreparedStatement的源码 看看有没有办法 实现,到时大家再来研究哦
      

  7.   

    toString()的方法对于oracle的jdbc没有用。