从ResultSet到数据库SQL Query的不同值的比较

时间:2014-12-26 06:22:50

标签: java resultset

我是java新手。我有一个提供以下输出的SQL查询

logtime 2014-09-02 16:05:10.0

BL1_data_SS_ST 2      

BL2_data_SS_ST 2

BL3_data_SS_ST 2

BL4_data_SS_ST 1

BL5_data_SS_ST 0

BL6_data_SS_ST 2

/* continues till BL27_data_SS_ST */

st1_prmt_status_p45 1

beam_current  110.58 

beam_energy 2500.0635

我的输出中只有一行和31列。我正在使用Java和JSP。


修改

通过以下方法检索上述结果

public String[][] beamline_Status() {
  int i = 0;
  try {
    con = getConnection();
    stmt = con.createStatement();

    String sql = "SELECT TOP 1 c.logtime, a.BL1_data_SS_ST,a.BL2_data_SS_ST,a.BL3_data_SS_ST,a.BL4_data_SS_ST,a.BL5_data_SS_ST,a.BL6_data_SS_ST,a.BL7_data_SS_ST,a.BL8_data_SS_ST,a.BL9_data_SS_ST,a.BL10_data_SS_ST,a.BL11_data_SS_ST, a.BL12_data_SS_ST,a.BL13_data_SS_ST,a.BL14_data_SS_ST,a.BL15_data_SS_ST,a.BL16_data_SS_ST,a.BL17_data_SS_ST,a.BL18_data_SS_ST,a.BL19_data_SS_ST,a.BL20_data_SS_ST,a.BL21_data_SS_ST,a.BL22_data_SS_ST,a.BL23_data_SS_ST,a.BL24_data_SS_ST,a.BL25_data_SS_ST,a.BL26_data_SS_ST,a.BL27_data_SS_ST,b.st1_prmt_status_p45,c.beam_current,c.beam_energy from INDUS2_BLFE.dbo.main_BLFE_status a inner join INDUS2_MSIS.dbo.main_MSIS_status b on a.logtime=b.logtime inner join INDUS2_BDS.dbo.DCCT c on b.logtime=c.logtime ORDER BY c.logtime DESC ";

    stmt.executeQuery(sql);
    rs = stmt.getResultSet();

    while (rs.next()) {
      for (int j = 0; j < 31; j++) {
        a[i][j] = rs.getString(j + 1);
      }
    }
  } catch (Exception e) {
    System.out.println("\nException (String code):" + e);
  } finally {
    closeConnection(stmt, rs, con);
  }
  return a;
}

现在我想定义一个方法,从ResultSet中检索列值为01的值。怎么做。

编辑2

我正在尝试通过以下代码从结果集中检索列值为1的列值: -

public String[][] beam_CurrentStatus() {
  int i = 0;
  try

  {
    con = getConnection();
    stmt = con.createStatement();

    String sql = "SELECT TOP 1 c.logtime, a.BL1_data_SS_ST,a.BL2_data_SS_ST,a.BL3_data_SS_ST,a.BL4_data_SS_ST,a.BL5_data_SS_ST,a.BL6_data_SS_ST,a.BL7_data_SS_ST,a.BL8_data_SS_ST,a.BL9_data_SS_ST,a.BL10_data_SS_ST,a.BL11_data_SS_ST, a.BL12_data_SS_ST,a.BL13_data_SS_ST,a.BL14_data_SS_ST,a.BL15_data_SS_ST,a.BL16_data_SS_ST,a.BL17_data_SS_ST,a.BL18_data_SS_ST,a.BL19_data_SS_ST,a.BL20_data_SS_ST,a.BL21_data_SS_ST,a.BL22_data_SS_ST,a.BL23_data_SS_ST,a.BL24_data_SS_ST,a.BL25_data_SS_ST,a.BL26_data_SS_ST,a.BL27_data_SS_ST,b.st1_prmt_status_p45,c.beam_current,c.beam_energy from INDUS2_BLFE.dbo.main_BLFE_status a inner join INDUS2_MSIS.dbo.main_MSIS_status b on a.logtime=b.logtime inner join INDUS2_BDS.dbo.DCCT c on b.logtime=c.logtime ORDER BY c.logtime DESC ";

    stmt.executeQuery(sql);
    rs = stmt.getResultSet();

    while (rs.next()) {
      for (int j = 1; j < 31; j++) {
        if ((rs.getString(j)) == "1")

          a[i][j] = rs.getString(j + 1);

      }


    }
  } catch (Exception e) {
    System.out.println("\nException in:" + e);
  } finally {
    closeConnection(stmt, rs, con);
  }

  return a;


}

但是我得到的代码的结果是

  

[[Ljava.lang.String; @ ea25c1

1 个答案:

答案 0 :(得分:0)

如果您想要ResultSet中的整个表格,然后只获取第一列和第二列,您可以这样做:

 Statement stmt=conn.createStatement();
 ResultSet rs= stmt.executeQuery("select * from tableName");
 rs.getInt(1);      //assuming your column is of compatible type
 rs.getInt(2);

或另一种方法是,您只需将数据库中的前两列检索到ResultSet