小弟经常对数据库操作,将其封装如下。可是在执行getsql()时总会抛出下面自定义的异常,而在执行EXECSQL()时虽没有异常抛出,可是到数据库中查看时,没有数据的插入,或者任何改动。数据源都正确配置了,原来没有加密码,加上后还是这样的错误,请各位高手指点/
import java.sql.*;
public class data{
    ResultSet rs;
    String strurl="jdbc:odbc:mydb";
    public data()
    {
    }
    public ResultSet getsql(String  sql)
    {
try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection conn=DriverManager.getConnection(strurl);
            Statement st=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);            ResultSet rs=st.executeQuery(sql);
            return rs;
        }catch(Exception e)
        {
        System.out.println("getResult ---------"+e.toString());
        return null;        }    }
public boolean execsql(String sql)
    {
        try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection conn=DriverManager.getConnection(strurl);
            Statement st=conn.createStatement();
        st.executeUpdate(sql);
          conn.commit();
          return true;        }catch(Exception e)
        {
        System.out.println("execsql---------"+e.toString());
        return false;        }
    }}

解决方案 »

  1.   

    getsql()时抛出异常,此时返回null。所以在execsql()时,根本没有执行任何SQL
      

  2.   

    SORRY看错了,我以为getsql()时返回SQL呢
      

  3.   

    代码封装的问题比较大,
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
                Connection conn=DriverManager.getConnection(strurl); 
                Statement st=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);             ResultSet rs=st.executeQuery(sql); 
                return rs; 这些都重复了,这个数据库连接你可以放到构造函数中