我的程序是这样的:
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中显示查询的最后一行,但是我要每行都显示.我弄了很久没搞出来,头都大了,各位大哥帮帮
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中显示查询的最后一行,但是我要每行都显示.我弄了很久没搞出来,头都大了,各位大哥帮帮
this.classno=rs.getString("classno");
this.classname=rs.getString("classname");
this.classteacher=rs.getString("classteacher");
}你这个当然只能显示最后一行了,若记录集有多条的话,后面的把前的冲掉了,需要更改代码结构。
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");
}
}
{
这里会有很多行数据库的记录被读出来,每一行对应一个对像,所以,第循环一次就要创建一个对像.然后把对像放到集合里边去~~~~}