菜鸟问题 。我只能找到jdk中PreparedStatement的接口, 但我想重写executeUpdate()方法

解决方案 »

  1.   

    这个是具体由某个数据库厂商进行编写的,java只提供接口,
    你可以直接定义一个数据库访问类然后在进行相关改进。
    如:
    public int executeUpdate(String sql) throws Exception 
        { 
            try{ 
                dbConn = getConn() ;   //get connection
                if( dbConn == null) 
                    return -1; 
                if( stmt != null )   { 
                    stmt.close() ; 
                    stmt = null ; 
                } 
                stmt= dbConn.createStatement();  //get statement
                if(stmt == null) 
                    return -2; 
                stmt.executeUpdate(sql);    //execute
                return 0; 
            } catch(Exception e) { 
                System.out.println( "executeUpdate[ "+ sql + "] fail. " + e.getMessage() ); 
                return -99; 
            } finally { 
                try { 
                    if(stmt!=null){ 
                        stmt.close(); 
                        stmt = null; 
                    } 
                }catch(Exception e) { 
                    System.out.println( "Err: executeUpdate() close stmt fail. ") ; 
                    return -88; 
                } 
            } 
        } 
      

  2.   

    可以参看这里的一个数据库的访问类http://topic.csdn.net/u/20090831/23/356489bc-9b2f-4f5b-93e1-fcb6bd7f1ada.html
      

  3.   

    谢谢楼上的, 事实上 PreparedStatement 有 
    String sql = “…… (?,?)”;
    ps.setString(1, x);
    ps.setInt(2, x);
    ps.executeUpdate();我想复写executeUpdate();方法, 返回String  是 编译后的完整的sql文  而不是带有“?”的那种
      

  4.   

    看不懂,PreparedStatement 不是挺好用的么…………
      

  5.   

    PreparedStatement
    也没有
    ps.getString(1)
    这样的方法。
    怎样复写?
      

  6.   

    把executeUpdate(); 写出返回值
    String sqltotal = ps.executeUpdate(); 
      

  7.   


    public class RR
    {
    public static void main(String... args) {
    //String sql = “…… (?,?)”; 
    //ps.setString(1, x); 
    //ps.setInt(2, x); 
    //这里要把所有的?的值放到一个String数组中arr
    //ps.executeUpdate(sql,arr);  }
    // 
    public String executeUpdate(String sql,String[] args) {
    StringBuilder sb = new StringBuilder();
    int count = 0;
    for(int i = 0; i < sql.length(); i++) {
    char c = sql.charAt(i)
    if(c == 'c') {
    sb.append(args[count]);
    count++;
    }
    sb.append(c);
    }
    ps.executeUpdate(); }
    }
    那估计只能这样了.
      

  8.   

    多谢 SF之父
             //ps.setString(1, x); 
            //ps.setInt(2, x); 
    中我特意用了一个int 和String  但是 数据库就不确定,数据类型又有好多, 
    我的需求是一个 连锁店(B/S)单向同步完成 双向备份效果,   这个是想做成一个组件, 想尽量做的完善些, 如你所说 , jdbc类是由数据库商编写,源码过于难找,实在不行, 我可以考虑写成 Statement 对象我测试过 优化过后 同步频率 一秒也可以 达到百条以上
      

  9.   

    但是这些数据类型都可以转化为String,
    所以首先转化为String,再存到String[] 中。
      

  10.   

    重写 executeUpdate() ???那是非常难的,如果真能重写的话估计也不会发这个帖子来问了。