从特定的java行开始查询
我试图在特定数量的查询之后得到结果,即从特定的java行开始查询,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,我试图在特定数量的查询之后得到结果,即 String sql="Select from mytable where sell_id = '"+purchase_id+"'"; java.sql.Statement stmt=conn.createStatement(); java.sql.ResultSet res=stmt.executeQuery(sql); while(res > 4){ //this line is where
String sql="Select from mytable where sell_id =
'"+purchase_id+"'";
java.sql.Statement stmt=conn.createStatement();
java.sql.ResultSet res=stmt.executeQuery(sql);
while(res > 4){ //this line is where i still couldn't figured out
String quantity = res.getString("quantity");
String item = res.getString("item_name");
String price = res.getString("price");
}
但它显示了一个错误“二进制运算符'>'的操作数类型错误”
结果应该是这样的
| 14 | tissue | 2$ |
| 2 | snack | 6$ |
任何建议都将被接受您的变量
res
不是一个数字。实际上,您正在将一个对象与一个数字文本进行比较,因此得到了错误。如果要循环到结果集中,可以执行以下操作:
while(res.next()){
// do something here with your data
}
您的变量
res
不是一个数字。实际上,您正在将一个对象与一个数字文本进行比较,因此得到了错误。如果要循环到结果集中,可以执行以下操作:
while(res.next()){
// do something here with your data
}
您需要的应该是()上方的行数。
您需要的应该是()上方的行数。
您可以使用计数器检查条件,如下所示:
int counter=1;
while(res.next()){
if(counter>4){
String quantity = res.getString("quantity");
String item = res.getString("item_name");
String price = res.getString("price");
}
counter++;
}
您可以使用计数器检查条件,如下所示:
int counter=1;
while(res.next()){
if(counter>4){
String quantity = res.getString("quantity");
String item = res.getString("item_name");
String price = res.getString("price");
}
counter++;
}
试着这样做:
while(res.next()){ //anything you can think of!! }
试着这样做:
while(res.next()){ //anything you can think of!! }
要跳转到结果集的第5行,可以使用:
res.absolute(5);
由于您正在定位之后和获取数据之前调用.next(),因此代码的工作方式如下:
String sql="Select from mytable where sell_id =
'"+purchase_id+"'";
java.sql.Statement stmt=conn.createStatement();
java.sql.ResultSet res=stmt.executeQuery(sql);
res.absolute(4); // will get your cursor to the 4th row
while(res.next()){ // will get you to the 5th row and continue to the end
String quantity = res.getString("quantity");
String item = res.getString("item_name");
String price = res.getString("price");
}
第二种选择是在select语句中使用Limit子句:
String sql="Select from mytable where sell_id = '"+purchase_id+"'" + " limit 4, 9999999999";
您将不需要res.absolute(n),因为第一个res.next()将直接发送到第五行。这里我假设您的表的行数少于99999999行。如果它有更多,那么使用一个更大的数字
以下是绝对值(n)的API文档:
将光标移动到此ResultSet对象中的给定行号
如果行号为正,光标将相对于结果集的开头移动到给定行号。第一行是第1行,第二行是第2行,依此类推
如果给定的行号为负数,光标将移动到相对于结果集末尾的绝对行位置。例如,调用方法absolute(-1)将光标定位在最后一行;调用方法absolute(-2)将光标移动到倒数第二行,依此类推
如果指定的行号为零,则光标将移动到第一行之前
尝试将光标定位在结果集中第一行/最后一行之外时,光标将位于第一行之前或最后一行之后
注意:调用absolute(1)与调用first()相同。调用绝对值(-1)与调用last()相同
参数:
行-光标应移动到的行的编号。值为零表示光标将位于第一行之前;正数表示从结果集开始计算的行号;负数表示从结果集末尾开始计数的行号
返回:
如果光标移动到此ResultSet对象中的某个位置,则为true;如果光标位于第一行之前或最后一行之后,则为false
抛出:
SQLException-如果发生数据库访问错误;对关闭的结果集调用此方法,或者结果集类型仅为类型\u FORWARD\u
SQLFeatureNotSupportedException-如果JDBC驱动程序不支持此方法以跳转到结果集的第5行,则可以使用:
res.absolute(5);
由于您正在定位之后和获取数据之前调用.next(),因此代码的工作方式如下:
String sql="Select from mytable where sell_id =
'"+purchase_id+"'";
java.sql.Statement stmt=conn.createStatement();
java.sql.ResultSet res=stmt.executeQuery(sql);
res.absolute(4); // will get your cursor to the 4th row
while(res.next()){ // will get you to the 5th row and continue to the end
String quantity = res.getString("quantity");
String item = res.getString("item_name");
String price = res.getString("price");
}
第二种选择是在select语句中使用Limit子句:
String sql="Select from mytable where sell_id = '"+purchase_id+"'" + " limit 4, 9999999999";
您将不需要res.absolute(n),因为第一个res.next()将直接发送到第五行。这里我假设您的表的行数少于99999999行。如果它有更多,那么使用一个更大的数字
以下是绝对值(n)的API文档:
将光标移动到此ResultSet对象中的给定行号
如果行号为正,光标将相对于结果集的开头移动到给定行号。第一行是第1行,第二行是第2行,依此类推
如果给定的行号为负数,光标将移动到相对于结果集末尾的绝对行位置。例如,调用方法absolute(-1)将光标定位在最后一行;调用方法absolute(-2)将光标移动到倒数第二行,依此类推
如果指定的行号为零,则光标将移动到第一行之前
尝试将光标定位在结果集中第一行/最后一行之外时,光标将位于第一行之前或最后一行之后
注意:调用absolute(1)与调用first()相同。调用绝对值(-1)与调用last()相同
参数:
行-光标应移动到的行的编号。值为零表示光标将位于第一行之前;正数表示从结果集开始计算的行号;负数表示从结果集末尾开始计数的行号
返回:
如果光标移动到此ResultSet对象中的某个位置,则为true;如果光标位于第一行之前或最后一行之后,则为false
抛出:
SQLException-如果发生数据库访问错误;对关闭的结果集调用此方法,或者结果集类型仅为类型\u FORWARD\u
SQLFeatureNotSupportedException-如果JDBC驱动程序不支持此方法是的,我一直在考虑,我应该使用什么代码从我的决定开始进行查询(而不是像默认值那样从数组[0])@Jokurilisme您可以查看下面Costis Aivalis的答案。此外,每次查询是否重要时,都需要检查是否返回相同顺序的数据。如果有关系,我想你需要在你的查询中添加一个“order by”。是的,我一直在考虑,我应该使用什么代码来进行查询,从我的决定开始(而不是像默认值那样从数组[0]开始)@Jokurilisme你可以在下面查看Costis Aivalis的答案。还有,你需要去切