日期:2014-05-20  浏览次数:20982 次

求助:jdbc中的问题
package yinhang;
import yinhang.ZhangHu;
import com.sina.wangjiajuan.Tool;
import java.sql.*;
public class DBZhuanZhang implements DBZhuanZhangJieKou{

@Override
public void DBtransfer(ZhangHu o,ZhangHu b,int money) {
// TODO Auto-generated method stub
Connection conn=Tool.getConnection();
Statement st=null;
ResultSet rs=null;
try {
int IDo=o.getID();
int IDb=b.getID();
String sql="select YuEr from zhanghu where ID="+IDo;
String sql1="select YuEr from zhanghu where ID="+IDb;
st=conn.createStatement();
rs=st.executeQuery(sql);
int YuEro=0;
while(rs.next()){
YuEro=rs.getInt(1); ??????
}
rs=st.executeQuery(sql1);
int YuErb=0;
while(rs.next()){
YuErb=rs.getInt(1);
}
if(YuEro <money){
System.out.print("yu er buzu");
}else {
YuEro-=money;
YuErb+=money;
String sql2="update zhanghu set YuEr="+YuEro+"where ID="+IDo;
String sql3="update zhanghu set YuEr="+YuErb+"where ID="+IDb;
st.executeUpdate(sql2);
st.executeUpdate(sql3);

}


} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}



问题在???处,为何getInt(1),而我的表结构是YuEr是第二个字段,不应该是getInt(2),但是;用了之后,报“无效的列索引”,why????????

------解决方案--------------------
数据库索引是从0开始的,getInt(1)就是第二个字段了
------解决方案--------------------
楼上的不对,这不是看表结构的,而是看查询语句的字段的位置(从 1 开始计),你的查询语句是:

select YuEr from zhanghu where ID="+IDb; 

字段列表为:YuEr,也就是第 1 个,如果前面还有一个的话,那它就是第 2 个了。
------解决方案--------------------
可以使用rs.getInt("YuEr"),比较直观
------解决方案--------------------