package com.db;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class Dbc {
    public Connection con = null;
    public Statement stmt = null;
    public ResultSet rs = null;    public static Connection getConnection() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            String url = "jdbc:oracle:thin:@hostip:1521:fitec";
            Connection con = DriverManager.getConnection(url, "train2011_2", "train2011_2");        } catch (Exception e) {
            e.printStackTrace();
        }
        return con;这里说Cannot make a static reference to the non-static field con    }    public ResultSet doQuery(String sql) {
        try {
            con = Dbc.getConnection();
            stmt = con.createStatement();
            rs = stmt.executeQuery(sql);        } catch (Exception e) {
            e.printStackTrace();
        }
        return rs;    }    public int doUpdate(String sql) {
        try {
            int rs;
            con = Dbc.getConnection();
            stmt = con.createStatement();
            rs = stmt.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rs;这里又说Type mismatch: cannot convert from ResultSet to int    }    public void closeConnection() {
        try {
            if (rs != null)
                rs.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            if (stmt != null)
                stmt.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            if (con != null)
                con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
新手,高手给解释一下吧

解决方案 »

  1.   

    最基本的java基础
    public static Connection getConnection() {} 把static去掉public ResultSet doUpdate(String sql) {}
      

  2.   

    第一个因为你要返回的con声明在try里面  在外面找不到  无效  而且建议也不要使用static静态类
    第二个因为你声明rs在try里面  出了try无效
      

  3.   

    Connection con = DriverManager.getConnection(url, "train2011_2", "train2011_2");改为con= = DriverManager.getConnection(url, "train2011_2", "train2011_2");
    在所以方法外面外面对con进行声明Connection con = null;
    把static去掉
      

  4.   

    一般来讲,getConnection()方法都是用非static定义的
    public Connection getConnection() {//不需用static定义
      try {
      Class.forName("oracle.jdbc.driver.OracleDriver");
      String url = "jdbc:oracle:thin:@hostip:1521:fitec";
      Connection con = DriverManager.getConnection(url, "train2011_2", "train2011_2");  } catch (Exception e) {
      e.printStackTrace();
      }
      return con;
    }定义的是什么类型,返回值就是什么类型
    public int doUpdate(String sql) { //这里定义的是int型,就得返回int型数据,这里你想返回的
                                           //是ResultSet型,就得把int修改为ResultSet
     }
    修改后为
    public ResultSet doUpdate(String sql){
           ...... 
    }
    其他的不需变
      

  5.   

    可是不把getConnection()这个方法生命成静态的后面的方法不能调用它啊,告诉我完整的修改方法吧
      

  6.   


    public static Connection getConnection() {
        try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    String url = "jdbc:oracle:thin:@hostip:1521:fitec";
    Connection con = DriverManager.getConnection(url, "train2011_2", "train2011_2");
        } catch (Exception e) {
    e.printStackTrace();
        }
        return con;
    }把红色的部分去掉。你已经声明了类变量Connection conn,不用再声明了。因为你前面声明的conn是非静态的,所以要用非静态的方法访问。