Java结果集跳过记录
经过一上午的研究,我被一段简单的代码难住了 我只想从测试数据库中的原材料表中获取所有记录 以下是我正在做的:Java结果集跳过记录,java,mysql,Java,Mysql,经过一上午的研究,我被一段简单的代码难住了 我只想从测试数据库中的原材料表中获取所有记录 以下是我正在做的: public static void fetchIthos(ArrayList<String> ithosList, UserDto user) { // TODO Auto-generated method stub //get our stuff first - raw materials and doc names and paths
public static void fetchIthos(ArrayList<String> ithosList, UserDto user) {
// TODO Auto-generated method stub
//get our stuff first - raw materials and doc names and paths
try {
Connection conn = user.getConnection();
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM raw_material where object_id > 0");
do {
String result = rs.getString("raw_material_number").toString();
System.out.println("next item: " + result);
//ithosList.add(rs.getString("raw_material_number"));
} while(rs.next());
}
catch (Exception e) {
ithosList.equals(null);
System.out.println("DB error : " + e);
}
}
publicstaticvoidfetchithos(ArrayList-ithosList,UserDto-user){
//TODO自动生成的方法存根
//首先获取我们的资料-原材料和文档名称和路径
试一试{
Connection conn=user.getConnection();
语句st=conn.createStatement();
结果集rs=st.executeQuery(“从对象id>0的原材料中选择*);
做{
字符串结果=rs.getString(“原材料编号”).toString();
System.out.println(“下一项:+结果”);
//添加(rs.getString(“原材料编号”);
}while(rs.next());
}
捕获(例外e){
ithosList.equals(null);
System.out.println(“数据库错误:+e”);
}
}
以下是mySQL中的结果:
因此,我希望第一个“结果”是MAN-500-121200000
,但它显示为RAW-001485
我看不到代码中的任何地方我正在“跳过”第一条记录,但如果我放弃它,它将跳过下一条记录到MAN-500-056100000
我是否使用了错误的用户连接?这是我能看到的唯一影响这一点的东西
我以为
user.getConnection()
只会对常规测试数据库执行此操作。您的代码似乎不正确,预期的循环是:
while(rs.next()) {
String result = rs.getString("raw_material_number");
System.out.println("next item: " + result);
}
考虑使用语句正确关闭您的连接
,语句
和结果集
,如下所示:
try (Connection conn = user.getConnection();
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM raw_material where object_id > 0")) {
// My code here
}
您的代码似乎不正确,预期的循环是:
while(rs.next()) {
String result = rs.getString("raw_material_number");
System.out.println("next item: " + result);
}
考虑使用语句正确关闭您的连接
,语句
和结果集
,如下所示:
try (Connection conn = user.getConnection();
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM raw_material where object_id > 0")) {
// My code here
}
像这样试试
while(rs.next()){
String result = rs.getString("raw_material_number");
System.out.println("next item: " + result);
}
像这样试试
while(rs.next()){
String result = rs.getString("raw_material_number");
System.out.println("next item: " + result);
}
publicstaticvoidfetchithos(ArrayList-ithosList,UserDto-user){
//TODO自动生成的方法存根
int i=1;
//首先获取我们的资料-原材料和文档名称和路径
试一试{
Connection conn=user.getConnection();
语句st=conn.createStatement();
结果集rsCount=st.executeQuery(“从原材料中选择计数(*));
rsCount.first();
long r=(long)rsCount.getObject(i);
对于(i=1;i
这是一种很好的方式,但现在它已经开始工作了,至少在高级开发人员从丧亲之痛中归来之前是这样。请记住,我只经历了3个月的爪哇火洗礼。lol.公共静态void fetchIthos(ArrayList ithosList,UserDto user){
//TODO自动生成的方法存根
int i=1;
//首先获取我们的资料-原材料和文档名称和路径
试一试{
Connection conn=user.getConnection();
语句st=conn.createStatement();
结果集rsCount=st.executeQuery(“从原材料中选择计数(*));
rsCount.first();
long r=(long)rsCount.getObject(i);
对于(i=1;i
这是一种很好的方式,但现在它已经开始工作了,至少在高级开发人员从丧亲之痛中归来之前是这样。请记住,我只经历了3个月的爪哇火洗礼。lol.这肯定是对的,尽管它会跳过第一个结果似乎有些奇怪。事实上,我似乎记得如果不推进光标,会收到错误消息,但这可能取决于实现。'while(rs.next()){String result=rs.getString(“raw_material_number”);System.out.println(“next item:+result);}“还是生的-001485@PaulaAnneMcGrath你根本没有得到MAN-500-121200000?这肯定是对的,尽管它会跳过第一个结果似乎有些奇怪。事实上,我似乎记得如果不推进光标,会收到错误消息,但这可能取决于实现。'while(rs.next()){String result=rs.getString(“raw_material_number”);System.out.println(“next item:+result);}“还是生的-001485@PaulaAnneMcGrath你根本得不到MAN-500-121200000?
ithosList.equals(null)代码>什么都不做。如果ithosList
为null
,则该方法调用返回true,否则返回false。我还没有开始编写该片段。我希望在添加到arraylist之前得到正确的结果代码>两次,是否可以保证结果将以相同的顺序返回?我无法想象为什么它不会以正确的顺序返回。我确实添加了一个“order by object_id asc,结果仍然相同。”代码>什么都不做。如果ithosList
为null
,则该方法调用返回true,否则返回false。我还没有找到