我的程序是这样的:
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中显示查询的最后一行,但是我要每行都显示.我弄了很久没搞出来,头都大了,各位大哥帮帮

解决方案 »

  1.   

    while(rs.next()){
      this.classno=rs.getString("classno");
      this.classname=rs.getString("classname");
      this.classteacher=rs.getString("classteacher");
    }你这个当然只能显示最后一行了,若记录集有多条的话,后面的把前的冲掉了,需要更改代码结构。
      

  2.   

    草草地写了一个你参考一下,采用了 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");
      }
    }
      

  3.   

    就两分好辛苦啊....这么多人犯这个错误while(rs.next())
    {
                    
    这里会有很多行数据库的记录被读出来,每一行对应一个对像,所以,第循环一次就要创建一个对像.然后把对像放到集合里边去~~~~}