Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从特定的java行开始查询_Java_Mysql_Sql_Jdbc - Fatal编程技术网

从特定的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的答案。还有,你需要去切