PreparedStatement 的源码在哪里,我想复写executeUpdate()方法; 菜鸟问题 。我只能找到jdk中PreparedStatement的接口, 但我想重写executeUpdate()方法 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个是具体由某个数据库厂商进行编写的,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; } } } 可以参看这里的一个数据库的访问类http://topic.csdn.net/u/20090831/23/356489bc-9b2f-4f5b-93e1-fcb6bd7f1ada.html 谢谢楼上的, 事实上 PreparedStatement 有 String sql = “…… (?,?)”;ps.setString(1, x);ps.setInt(2, x);ps.executeUpdate();我想复写executeUpdate();方法, 返回String 是 编译后的完整的sql文 而不是带有“?”的那种 看不懂,PreparedStatement 不是挺好用的么………… PreparedStatement也没有ps.getString(1)这样的方法。怎样复写? 把executeUpdate(); 写出返回值String sqltotal = ps.executeUpdate(); 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(); }}那估计只能这样了. 多谢 SF之父 //ps.setString(1, x); //ps.setInt(2, x); 中我特意用了一个int 和String 但是 数据库就不确定,数据类型又有好多, 我的需求是一个 连锁店(B/S)单向同步完成 双向备份效果, 这个是想做成一个组件, 想尽量做的完善些, 如你所说 , jdbc类是由数据库商编写,源码过于难找,实在不行, 我可以考虑写成 Statement 对象我测试过 优化过后 同步频率 一秒也可以 达到百条以上 但是这些数据类型都可以转化为String,所以首先转化为String,再存到String[] 中。 重写 executeUpdate() ???那是非常难的,如果真能重写的话估计也不会发这个帖子来问了。 按钮被按下去就不再起来了 socket 基础问题 Thread--线程如何用 去除空格! 连接mysql 如何将String型转换成float型? 各位大虾:哪位知道Win2k下的JDK环境配置?在下跪求赐教.我用的是1.3版本 怎么将ArrayList以前相同的字符串处理,只保留最后一个相同的字符串? 这是为什么?为什么?奇怪!!!请大家过来帮个忙!!! 急!急!急!有没有高手做过applet用socket通讯的问题 将float num=123.0001f,保留两位小数,格式化后返回float类型 java编程实现tiff图片转换成jpg格式
你可以直接定义一个数据库访问类然后在进行相关改进。
如:
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;
}
}
}
String sql = “…… (?,?)”;
ps.setString(1, x);
ps.setInt(2, x);
ps.executeUpdate();我想复写executeUpdate();方法, 返回String 是 编译后的完整的sql文 而不是带有“?”的那种
也没有
ps.getString(1)
这样的方法。
怎样复写?
String sqltotal = ps.executeUpdate();
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(); }
}
那估计只能这样了.
//ps.setString(1, x);
//ps.setInt(2, x);
中我特意用了一个int 和String 但是 数据库就不确定,数据类型又有好多,
我的需求是一个 连锁店(B/S)单向同步完成 双向备份效果, 这个是想做成一个组件, 想尽量做的完善些, 如你所说 , jdbc类是由数据库商编写,源码过于难找,实在不行, 我可以考虑写成 Statement 对象我测试过 优化过后 同步频率 一秒也可以 达到百条以上
所以首先转化为String,再存到String[] 中。