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

© 范明正 黑马帝   /  2011-8-16 11:15  /  1966 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static ResultSet select(String sql)和public static int change(String sql)两个函数中为什么不能执行dbclose()。

public class Db {
          private static Connection con=null;
          private static Statement st=null;
          private static ResultSet rs=null;
          
          private static void dbconn()
          {
                  try {
                          Class.forName("com.mysql.jdbc.Driver");
                  } catch (ClassNotFoundException e1) {
                                // TODO 自动生成 catch 块
                          e1.printStackTrace();
                  }
                  String conURL= "jdbc:mysql://localhost:3306/mydb";
                  String user="root";
                  String password="root";
                  try {
                          con=DriverManager.getConnection(conURL, user, password);//注册驱动
                          st=con.createStatement();
                  } catch (SQLException e) {
                // TODO 自动生成 catch 块
                          e.printStackTrace();
                  }
          }
          
          private static void dbclose()
          {
                  try {
                                if (rs != null)
                                        rs.close();
                        } catch (SQLException e) {
                                e.printStackTrace();
                        } finally {
                                try {
                                        if (st != null)
                                                st.close();
                                } catch (SQLException e) {
                                        e.printStackTrace();
                                } finally {
                                        if (con != null)
                                                try {
                                                        con.close();
                                                } catch (SQLException e) {
                                                        e.printStackTrace();
                                                }
                                }
                        }
          }
          
          public static ResultSet select(String sql)
          {
                  dbconn();
                  try {
                        rs=st.executeQuery(sql); //Statement的executeQuery()方法则是用于SELECT等查询数据库的SQL,executeUpdate()方法会返回int结果,表示记录变动的数目,executeQuery()方法会返回java.sql.ResultSet对象
                       
                    //return rs;
                  } catch (SQLException e) {
                        // TODO 自动生成 catch 块
                        e.printStackTrace();
                  }finally{
                          
                          //dbclose();
                  }
          return rs;
          }          
         
          public static int change(String sql)
          {
                  dbconn();
                  int i=0;
                  try {
                        i=st.executeUpdate(sql);
                  } catch (SQLException e) {
                        // TODO 自动生成 catch 块
                        e.printStackTrace();
                        return i;
                  }finally{
                          //dbclose();
                  }
                  return i;
          }         
          
          public static void main(String[] args) {
        //                dbconn();
                        String sql="select * from HomeWork";
                        String str="insert into HomeWork values(null,'Pikachu','male',2)";
                        ResultSet r1=select(sql);
                       
                        try {
                                while(r1.next())
                                {
                                        System.out.print(r1.getString("name")+"\n");
                                }
                        } catch (SQLException e) {
                                // TODO 自动生成 catch 块
                                e.printStackTrace();
                        }
                        int num=change(str);
                        System.out.println( num + "条数据已更改");
                        dbclose();
                }
          
}

3 个回复

倒序浏览
黑马网友  发表于 2011-8-16 17:41:05
沙发
楼主你的这个类没什么问题啊,我复制到我的工具里面没有错误提示

评分

参与人数 1技术分 +2 收起 理由
wangfayin + 2 亲自去做,好样的!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-8-17 10:23:41
藤椅
你的代码没有什么问题啊,是你环境配置有问题吧

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1 我很赞同

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-8-20 23:10:23
板凳
代码没有错误,报的是什么错误呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马