我把大概的东西直接放到JSP中就可以正确执行,但是放到Class中就是不行,下面是我大概的代码
public class getDBconn
{
  public getDBconn()
 {
    try
    {
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     }
     catch(ClassNotFoundException e)
     {
      System.out.print("classnotfound:"+e.getMessage());
      }
  }
   public Connection getConn(String dataname)
  {
    String url = dataname;
     try
     {   
        Connection conn=DriverManager.getConnection(url,"dba","sql");
      }
        catch(SQLException sqlexception) 
     {
       System.out.print("----error-----:"+sqlexception.getMessage());
      }
      finally
        {
            return conn;
        }
 } 然后调用getdbconn public class execData
 {
    private getDBconn getdbconn;    public execData(String dataname)
    {
       dataSqlAW = new getdbconn();
       conn = dataSqlAW.getConn(dataname);
    }   public  int createstmt()
   {
    int i = 0;
    try
     {
stmt = conn.createStatement();
i = 0;
     }
     catch(SQLException sqlexception)
     {
System.out.print(sqlexception.getMessage());
         i = -1;
      }
      finally
      {
return i;
      }
   }   public int executeData(String insert_sql)
  {

     int i = -1;
     try
     { 
        i = stmt.executeUpdate(insert_sql); //在这里把执行    
      }
     catch(SQLException sqlexception)
      {
      System.out.print(sqlexception.getMessage());
      i = -1;
      }
      finally
      {
      return i;
       }
       }   }
sql语句绝对正确,我用COPY下来的SQL语句直接在JSP文件中执行就没有任何问题

解决方案 »

  1.   

    catch(SQLException sqlexception)
         {
    System.out.print(sqlexception.getMessage());
             i = -1;
          }
    打出什么东西了?
      

  2.   

    public int executeData(String insert_sql)
      {

         int i = -1; //你先把这里改成0;
         try
         { 
            i = stmt.executeUpdate(insert_sql); //在这里把执行    
          }
         catch(SQLException sqlexception)
          {
          System.out.print(sqlexception.getMessage());
          i = -1;
          }
          finally
          {
          return i;
           }
           }
    看看它返回多少,就知道哪里错呀了呀...
      

  3.   

    to cricketlj(蟋蟀) 就是这里,根本就没有抛出异常
    执行完之后i = stmt.executeUpdate(insert_sql);
    就直接跳到了
    finally
    {
       return i;
    }
    我用
    try
    {     System.out.print("A");
        i = stmt.executeUpdate(insert_sql); //在这里把执行
        System.out.print("B");   
     }
      catch(SQLException sqlexception)
     {
      System.out.print("C");
      System.out.print(sqlexception.getMessage());
      i = -1;
     }
     finally
     {
       System.out.print("D");
       return i;
     }
    只打出了A和D
           
      

  4.   

    Statement stat=conn.createStatement();
    i= stat.executeUpdate(insert_sql);
      

  5.   

    catch(SQLException sqlexception)
    改称
    catch(Exception e)
      

  6.   

    Unicorn008(菜之鸟)说得对
    你抛出Exception了担不是SQLException
    而是你没有得到Statement
      

  7.   

    to: Unicorn008(菜之鸟) 和 cricketlj(蟋蟀)
    我用了你们两个的方法,首先是改成
    Statement stat=conn.createStatement();
    i= stat.executeUpdate(insert_sql);
    然后抛出Exception并printStackTrace
    显示错误信息为i = stmt.executeUpdate(insert_sql);NullPointerException抛出空指针异常,stmt没有被正确创建,为什么会这样啊?
      

  8.   

    to: Unicorn008(菜之鸟) 多谢了啊!!!
      

  9.   

    to Unicorn008(菜之鸟) :呵呵,理解错误我以前的代码是
    public class execData
     {
        private getDBconn getdbconn
        private Statement stmt
        public int createstmt (){
     .....   }
       public int executedata()
    {
     .....
    }
    然后在JSP中先调用createstmt方法,在调用executedata方法现在把createstmt方法去掉,executedate方法中改为
    Statement stat=conn.createStatement();
    i= stat.executeUpdate(insert_sql);
    然后在jsp中直接调用executedata方法
      

  10.   

    应该是你的sql语句的问题吧
      

  11.   

    sql语句肯定没问题,我现在发现了conn竟然也是null,我在检查一下数据库的连接问题
      

  12.   

    确实是conn为空,可是怎么会这样呢?
    我用这样的语句
    String url = "jdbc:odbc:inv001";
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection conn = DriverManager.getConnection(url,"dba","sql");
    在jsp中直接连接,并executeUpdate都没有问题
    我在class中的代码是把class.forName放在了getDBconn的构造函数中,然后在在getconn方法中
    Connection conn=DriverManager.getConnection(url,"dba","sql");
    这样就conn就为空,请问难道这样不行吗?