对数据库操作的方法如下
public static List<recordA> getAll() {
List<recordA> list = new ArrayList<recordA>();
Connection conn = null;
Statement state = null;
ResultSet rs = null; try {
conn = getDBA.getConn();
state = conn.createStatement();
rs = state
.executeQuery("select ID,RECORD_DATE,ADDRESS,SPEED,LIMITSPEED,POLICE_NAME,CAR_CODE from Record"); while (rs.next()) {
recordA temp = new recordA();
temp.setID(rs.getInt("ID"));
temp.setRECORD_DATE(rs.getString("RECORD_DATE"));
temp.setADDRESS(rs.getString("ADDRESS"));
temp.setSPEED(rs.getInt("SPEED"));
temp.setLIMITSPEED(rs.getInt("LIMITSPEED"));
temp.setPOLICE_NAME(rs.getString("POLICE_NAME"));
String CAR_CODE = rs.getString("CAR_CODE");
temp.setCAR_CODE(CAR_CODE); recordC subTemp = useRecordC.queryOne(CAR_CODE); temp.setCAR_TYPE(subTemp.getCAR_TYPE());
temp.setCAR_COLOR(subTemp.getCAR_COLOR());
list.add(temp); }
} catch (SQLException ee) {
System.out.println(ee.getMessage());
} finally {
getDBA.close(rs, state, conn);
}
return list; }
错误提示是[Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position.我可以读取到ID,RECORD_DATE,ADDRESS,SPEED,LIMITSPEED,POLICE_NAME,CAR_CODE的值,但是我读取不到CAR_TYPE和CAR_COLOR的值 PS: useRecordC.queryOne(CAR_CODE)是对另外一个数据库的操作是不是while(rs.next())语句块中不能在调用其他数据库的操作了?
public static List<recordA> getAll() {
List<recordA> list = new ArrayList<recordA>();
Connection conn = null;
Statement state = null;
ResultSet rs = null; try {
conn = getDBA.getConn();
state = conn.createStatement();
rs = state
.executeQuery("select ID,RECORD_DATE,ADDRESS,SPEED,LIMITSPEED,POLICE_NAME,CAR_CODE from Record"); while (rs.next()) {
recordA temp = new recordA();
temp.setID(rs.getInt("ID"));
temp.setRECORD_DATE(rs.getString("RECORD_DATE"));
temp.setADDRESS(rs.getString("ADDRESS"));
temp.setSPEED(rs.getInt("SPEED"));
temp.setLIMITSPEED(rs.getInt("LIMITSPEED"));
temp.setPOLICE_NAME(rs.getString("POLICE_NAME"));
String CAR_CODE = rs.getString("CAR_CODE");
temp.setCAR_CODE(CAR_CODE); recordC subTemp = useRecordC.queryOne(CAR_CODE); temp.setCAR_TYPE(subTemp.getCAR_TYPE());
temp.setCAR_COLOR(subTemp.getCAR_COLOR());
list.add(temp); }
} catch (SQLException ee) {
System.out.println(ee.getMessage());
} finally {
getDBA.close(rs, state, conn);
}
return list; }
错误提示是[Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position.我可以读取到ID,RECORD_DATE,ADDRESS,SPEED,LIMITSPEED,POLICE_NAME,CAR_CODE的值,但是我读取不到CAR_TYPE和CAR_COLOR的值 PS: useRecordC.queryOne(CAR_CODE)是对另外一个数据库的操作是不是while(rs.next())语句块中不能在调用其他数据库的操作了?
在queryOne()方法中,楼主也使用了ResultSet吧?是否调用过其next()方法?
如果没调用,调用一次就行啦。
如果还没有解决问题,请把相关的代码贴出来。
public static recordC queryOne(String CAR_CODE) { Connection conn = null;
Statement state = null;
ResultSet rs = null;
recordC temp = new recordC(); try {
conn = getDBC.getConn();
state = conn.createStatement();
rs = state.executeQuery("select * from car where CAR_CODE='"
+ CAR_CODE + "'");
temp.setCAR_CODE(rs.getString("CAR_CODE"));
temp.setCAR_TYPE(rs.getString("CAR_TYPE"));
rs.next();
} catch (SQLException ee) {
System.out.println(ee.getMessage());
} finally {
getDBC.close(rs, state, conn);
} return temp;
}
rs = state.executeQuery("select * from car where CAR_CODE='"+ CAR_CODE + "'");
if( rs.next() )
{
temp.setCAR_CODE(rs.getString("CAR_CODE"));
temp.setCAR_TYPE(rs.getString("CAR_TYPE"));
}
String sql = "select * from car where CAR_CODE='"+ CAR_CODE + "'";
System.out.println( sql ); //把SQL语句输出到控制台上
rs = state.executeQuery( sql );
if( rs.next() )
{
temp.setCAR_CODE(rs.getString("CAR_CODE"));
temp.setCAR_TYPE(rs.getString("CAR_TYPE"));
}把控制台输出的SQL语句拿数据库中运行一下,看看能不能查出结果?
temp.setCAR_TYPE(subTemp.getCAR_TYPE());
temp.setCAR_COLOR(subTemp.getCAR_COLOR());
但错误在哪我就郁闷了
感谢accp2006的帮助,200分全给你了