public CheckbackCopyright(String excelUrl) {
if (this.workbook == null) {
try {
InputStream inputStream = new FileInputStream(excelUrl);
this.workbook = Workbook.getWorkbook(inputStream);
this.excelUrl = excelUrl;
} catch (Exception ex) {
ex.printStackTrace();
}
}
} // 查询Excel工作表的每一行,并且返回歌手和歌曲
public void getColourringInfo() {
sheet = workbook.getSheet(0);
int rows = sheet.getRows();
int columns = sheet.getColumns();
for (int line = 1; line < rows; line++) {
for (int c = 0; c < columns; c++) {
Cell cell = sheet.getCell(c, line);
if (c == 0)
singer = cell.getContents().trim();
if (c == 1)
song = cell.getContents().trim();
}
executeQuery(line, singer, song);
}
} // 按歌曲和歌手查询彩铃信息
public void executeQuery(int line, String singer, String song) {
String sql = "select * from COLOURRING where SINGER='" + singer
+ "' and SONG like'" + song + "%' and RING='2'";
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
con = DatabaseConnection.getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()) {
addCopyrightAndUsefullife(line,rs.getString(4),rs.getString(5));
} else {
System.out.println(line + "," + singer + "," + song
+ ":没有找到本首彩铃的版权信息");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DatabaseConnection.close(rs);
DatabaseConnection.close(con, stmt);
}
} // 更新歌曲列表,即加上所属版权和有限期
public void addCopyrightAndUsefullife(int line, String copyright,
String usefullife) {
try {
WritableWorkbook wwb = Workbook.createWorkbook(new File(excelUrl),workbook);
WritableSheet ws = wwb.getSheet(0);
Label label1 = new Label(3, line, copyright); 
ws.addCell(label1);
Label label2 = new Label(4, line, usefullife);
ws.addCell(label2);
wwb.write();
wwb.close();
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (WriteException we) {
we.printStackTrace();
}
}
代码执行后始终只能修改到最后一行,请问是怎么回事,解决了马上给分!

解决方案 »

  1.   

    // 按歌曲和歌手查询彩铃信息
    下面的if(rs.next())错了,应该改成while(rs.next()) }
      

  2.   

    我是在这儿循环的啊!
    for (int line = 1; line < rows; line++) {
    for (int c = 0; c < columns; c++) {
    Cell cell = sheet.getCell(c, line);
    if (c == 0)
    singer = cell.getContents().trim();
    if (c == 1)
    song = cell.getContents().trim();
    }
    executeQuery(line, singer, song);
    }
    if(rs.next())我只是在当前结果集取出一条而已,应该没有错吧
      

  3.   

    // 更新歌曲列表,即加上所属版权和有限期
    public void addCopyrightAndUsefullife(int line, String copyright,String usefullife) {
       try {
    InputStream inputStream = new FileInputStream(excelUrl);//加上这两行
    this.workbook = Workbook.getWorkbook(inputStream);//加上这两行
            WritableWorkbook wwb = Workbook.createWorkbook(new File(excelUrl),workbook);
            WritableSheet ws = wwb.getSheet(0);
    如上所示,每次在写之前需要重新获取 workbook,不然的话,你的那个workbook就是永远是最原始的那个未经更新的,所以结果就只有更新一条了