A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯超 高级黑马   /  2013-4-2 12:43  /  1263 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天复习一下以前学的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 ,为什么可以定义为默认的而可以被静态方法可以访问。

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
  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. }
复制代码
我在代码中添加了注释,请楼主测试一下是不是这个问题。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马