我的代码是这样的:import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class JDBCTest1 {
private Connection conn; //声明Connection引用
private Statement stmt; //声明Statement对象引用
private ResultSet rs; //声明结果集

public void initialData(){
try{
this.initialConnection();
String sql = "select * from student";
// 执行SQL语句并返回结果集
rs = stmt.executeQuery(sql);
System.out.println(" 学号" + "\t" + " 姓名" + "\t" + "性别" );
String sno = null;
String ssex = null;
while(rs.next()) {
String name = new String(rs.getString("sname").getBytes("gbk"));
//String name = rs.getString("sname");
sno = rs.getString("sno");
ssex = rs.getString("ssex");
// 输出结果
System.out.println(sno + "\t" + name +"\t"+ ssex);
}
// 关闭结果集
rs.close();
// 关闭连接
conn.close();
}catch( Exception e){
e.printStackTrace();
} } /**
 * @Descriptions:数据库的连接和初始化
 * @author: yanghui
 * @date:2011-03-20
 * @param: 无
 * @return:无
 * */
public void initialConnection(){
try{ // 加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
// URL指向要访问的数据库名test
String url = "jdbc:mysql://127.0.0.1:3306/stu";
// MySQL配置时的用户名
String user = "root";
// MySQL配置时的密码
String password = "";
// 连续数据库
conn = DriverManager.getConnection(url, user, password); }catch(SQLException e){
e.printStackTrace();
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
}

/**
 * @Descriptions:数据库的关闭
 * @author: yanghui
 * @date:2011-03-20
 * @param: 无
 * @return:无
 * */
public void closeConn(){
try{
if(rs!=null){
rs.close();
}
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
} /**
 * @param args
 */
public static void main(String[] args) {
JDBCTest1 jt = new JDBCTest1();
jt.initialData(); }}原来我是将数据库的连接和关闭全部放在main函数中进行的,没有问题,现在我把它们分别抽取出来,写成两个方法,这样的话,每次运行的时候就会出问题java.lang.NullPointerException
at JDBCTest1.initialData(JDBCTest1.java:18)
at JDBCTest1.main(JDBCTest1.java:49)
我现在是提前自学java的,有很多的不懂,这个是不是变量作用域的问题啊啊,希望的到高人的详细解答!谢谢!!!!!