ResultSet 的问题!!在线等!菜鸟求救

hello_brick 2007-09-06 01:18:47
我的程序是这样的:
package brick0906;

import java.sql.*;
import java.sql.Date;
import java.util.*;
import java.io.*;

public class ArrayListText {

public static String drivername="oracle.jdbc.driver.OracleDriver";
public Connection conn=null;
ResultSet rs=null;
String classno=null;
String classname=null;
String classteacher=null;
//Date classdate=null;

public static void main(String args []) throws ClassNotFoundException, SQLException, IOException{

ArrayListText ar=new ArrayListText();
ArrayList al=new ArrayList();
ar.conninit();
ar.select();
al.add(ar.classno);
al.add(ar.classname);
al.add(ar.classteacher);
PrintWriter pw =new PrintWriter(new FileWriter(new File("F://java.txt")));
pw.println(al.get(0));
pw.println(al.get(1));
pw.println(al.get(2));
pw.close();
ar.connclose();

}

public void conninit() throws ClassNotFoundException, SQLException{
Class.forName(drivername);
String url="jdbc:oracle:thin:@169.254.179.82:1521:brick";
conn=DriverManager.getConnection(url,"brick","brick");
}

public void connclose() throws SQLException{
conn.close();
}

public void select() throws SQLException{
Statement ps=null;
String sql="select * from classinfo";
ps=conn.createStatement();
rs=ps.executeQuery(sql);
while(rs.next()){
this.classno=rs.getString("classno");
this.classname=rs.getString("classname");
this.classteacher=rs.getString("classteacher");
}
}

}

这样的话,我只能在java.txt中显示查询的最后一行,但是我要每行都显示.我弄了很久没搞出来,头都大了,各位大哥帮帮
...全文
172 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
awusoft 2007-09-06
  • 打赏
  • 举报
回复
就两分好辛苦啊....这么多人犯这个错误

while(rs.next())
{

这里会有很多行数据库的记录被读出来,每一行对应一个对像,所以,第循环一次就要创建一个对像.然后把对像放到集合里边去~~~~

}
muouniba 2007-09-06
  • 打赏
  • 举报
回复
楼上的强,
  • 打赏
  • 举报
回复
草草地写了一个你参考一下,采用了 DAO 模式,我这只有 MySQL,所以我连的是 MySQL。

========================================
ClassInfo.java -- POJO 类

package com.jdbc;

public class ClassInfo {
  private String classNo;
  private String className;
  private String classTeacher;
  
  public ClassInfo(){    
  }
  public String getClassName() {
    return className;
  }
  public void setClassName(String className) {
    this.className = className;
  }
  public String getClassNo() {
    return classNo;
  }
  public void setClassNo(String classNo) {
    this.classNo = classNo;
  }
  public String getClassTeacher() {
    return classTeacher;
  }
  public void setClassTeacher(String classTeacher) {
    this.classTeacher = classTeacher;
  }
}

===================================
ConnectionFactory.java -- 连接工厂

package com.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
  private static Connection con = null;

  public static Connection getConnection() throws SQLException {
    if(con == null || con.isClosed()) {
      try {
        Class.forName("com.mysql.jdbc.Driver");
      } catch (ClassNotFoundException e) {      
        e.printStackTrace();
      }
      String url = "jdbc:mysql://localhost:3306/aaa?" +
          "useUnicode=true&characterEncoding=GBK";
      String username = "root";
      String password = "root";
      con = DriverManager.getConnection(url, username, password);      
    }
    return con;
  }
}

=============================
ClassInfoDAO.java -- 数据访问类

package com.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class ClassInfoDAO {

  public List<ClassInfo> getAllClassInfo() {
    Connection con = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    List<ClassInfo> list = new ArrayList<ClassInfo>();
    try {
      con = ConnectionFactory.getConnection();
      String sql = "SELECT classno, classname, classteacher FROM classinfo";
      ps = con.prepareStatement(sql);
      rs = ps.executeQuery();
      while(rs.next()) {
        ClassInfo info = new ClassInfo();
        info.setClassNo(rs.getString("classno"));
        info.setClassName(rs.getString("classname"));
        info.setClassTeacher(rs.getString("classteacher"));
        list.add(info);
      }
    } catch (SQLException e) {    
      e.printStackTrace();
    } finally {
      try {
        rs.close();
        ps.close();
        con.close();
      }catch(SQLException e){
        e.printStackTrace();
      }
    }
    return list;    
  }
}

===========================
Main.java -- 主程序

package com.jdbc;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

public class Main {

  public static void main(String[] args) throws IOException {  
    ClassInfoDAO dao = new ClassInfoDAO();
    List<ClassInfo> list = dao.getAllClassInfo();
    PrintWriter pw =new PrintWriter(
        new FileWriter(new File("F:/java.txt"))
      );
    for(ClassInfo info : list) {
      pw.print(info.getClassNo());
      pw.print(", ");
      pw.print(info.getClassName());
      pw.print(", ");
      pw.println(info.getClassTeacher());
    }
    pw.close();
    System.out.println("OK");
  }
}
  • 打赏
  • 举报
回复
while(rs.next()){
  this.classno=rs.getString("classno");
  this.classname=rs.getString("classname");
  this.classteacher=rs.getString("classteacher");
}

你这个当然只能显示最后一行了,若记录集有多条的话,后面的把前的冲掉了,需要更改代码结构。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧