黑马程序员技术交流社区

标题: 发个帖子 [打印本页]

作者: 冯超    时间: 2013-4-2 12:43
标题: 发个帖子
今天复习一下以前学的jdbc,发现了一个关于静态方法能访问非静态成员的疑惑。
  1. package dao;

  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import java.sql.Statement;

  5. import com.mysql.jdbc.Connection;

  6. import jdbc.JdbcUtils;

  7. public class test {

  8.         /**
  9.          * @param args
  10.          * @throws SQLException
  11.          */
  12.         static Connection conn = null;
  13.         Statement st = null;
  14.         ResultSet rs = null;
  15.         static String sql = "select * from user";
  16.         public static void main(String[] args) {
  17.                 // TODO Auto-generated method stub
  18.                 //2.创建连接
  19.                 try {
  20.                         //2.创建连接
  21.                         conn =  (Connection) JdbcUtils.getConnection();
  22.                         //3.创建语句
  23.                         Statement st = conn.createStatement();
  24.                         //4.执行sql语句
  25.                         ResultSet rs = st.executeQuery(sql);
  26.                 } catch (SQLException e) {
  27.                
  28.                 } finally {
  29.                        
  30.                 }
  31.         }

  32. }
复制代码
Statement st = null;
ResultSet rs = null;
这两句我并没有定义为静态的,但是却在testMain函数中,居然没报错,我以为是对象的原因。但是我写了一个person类,在进行的类似的测试时候,发现依然不行,所以想在论坛中问问为什么Statement ,ResultSet ,为什么可以定义为默认的而可以被静态方法可以访问。
作者: 王洪宇    时间: 2013-4-14 18:32
  1. package dao;

  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import java.sql.Statement;

  5. import com.mysql.jdbc.Connection;

  6. import jdbc.JdbcUtils;

  7. public class test {

  8.         /**
  9.          * @param args
  10.          * @throws SQLException
  11.          */
  12.         static Connection conn = null;
  13.         Statement st = null;
  14.         ResultSet rs = null;
  15.         static String sql = "select * from user";
  16.         public static void main(String[] args) {
  17.                 // TODO Auto-generated method stub
  18.                 //2.创建连接
  19.                 try {
  20.                         //2.创建连接
  21.                         conn =  (Connection) JdbcUtils.getConnection();
  22.                         //3.创建语句,这里重新声明了一个st,不是类成员的st,你把Statement去掉看看报不报错
  23.                         Statement st = conn.createStatement();
  24.                         //4.执行sql语句,同上。
  25.                         ResultSet rs = st.executeQuery(sql);
  26.                 } catch (SQLException e) {
  27.                
  28.                 } finally {
  29.                         
  30.                 }
  31.         }

  32. }
复制代码
我在代码中添加了注释,请楼主测试一下是不是这个问题。
作者: 黄玉昆    时间: 2013-4-14 22:36
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2