对用jndi的方法不是很熟悉.
不能帮你解决问题.
Connection为空.
你还是改进改进获取数据源的算法.

解决方案 »

  1.   

    java.lang.NullPointerException,,没有消息传递
      

  2.   

    String strSQL="insert into user(userid,password) values('"+userid+"','"+password+"')";
      

  3.   

    Context ctx = new InitialContext();
          if(ctx == null ) 
              throw new Exception("No Context");      DataSource ds = 
                (DataSource)ctx.lookup(
                   "java:comp/env/jdbc/mysql");
          if(ds==null)
              throw new Exception("No DataSource");
    跟踪一下,看看哪一步是空值。
    我怀疑是你的配置文件可能有问题。
      

  4.   

    你是在什么Server下面???
    不同的Server Lookup的方法是有点区别的。
      

  5.   

    我用 liuyonghailiuyong(换个活法!) 朋友的方法
     改成这个
    try {
    Context initCtx=new javax.naming.InitialContext();
    if(initCtx == null ) 
              throw new Exception("No Context");
    Context envCtx=(Context)initCtx.lookup("java:comp/env");
    DataSource ds=(DataSource)envCtx.lookup("jdbc/mysql");
    if(ds==null)
              throw new Exception("No DataSource");}
    catch(Exception e){}
    可还是一样的错啊, szabo(阿波哥)朋友说的是什么意思啊
      

  6.   

    你在服务器里配数据源的jndi了吗
      

  7.   


    建议,将strSQL赋值为:String strSQL="insert into user(userid,password) values('guest','111111')";
    然后看看报错是否一样,如果还是一样抱错报错,我再想想,
      

  8.   

    那条语句错了,改过来
    String strSQL="insert into user(userid,password) values('"+userid+"','"+password+"')";
    你看我这样就没有错,你试一试在JDK下面运行一下
    import java.sql.*;
    import javax.naming.*;
    import javax.sql.*;
    import java.util.*;public class Bbsreg {
      private String dbUrl =  "jdbc:mysql://localhost:3306/BookDB";
      private String dbUser="dbuser";
      private String dbPwd="1234";
      ResultSet rs = null;
        public Bbsreg ()
        {
      try
      {
     Class.forName("com.mysql.jdbc.Driver");  
      }
      catch (Exception ex)
      {
      }
        
         }
        public ResultSet executeQuery(String sql) 
      {
    rs = null;
    try 
        {
    Connection conn = DriverManager.getConnection(dbUrl,dbUser,dbPwd);
    Statement stmt = conn.createStatement();
    rs = stmt.executeQuery(sql);

    catch(Exception ex) 

    System.err.println("aq.executeQuery: " + ex.getMessage());
    System.err.println("aq.executeQuerystrSQL: " + sql);
    }
    return rs;
     }
    //更改数据
        public void executeUpdate(String sql) 
     {
    try 
    {
    Connection conn = DriverManager.getConnection(dbUrl,dbUser,dbPwd); 
    Statement stmt = conn.createStatement();
    stmt.executeUpdate(sql);

    catch(Exception ex) 

    System.err.println("aq.executeUpdate: " + ex.getMessage());
    System.err.println("aq.executeUpadatestrSQL: " + sql);
    }
    }
       public static void main(String[] args) throws Exception
    {
    String userid="aaa";
    String password="123456";
    Bbsreg dbconn=new Bbsreg();
    String strSQL="insert into user(userid,password) values('"+userid+"','"+password+"')";
    dbconn.executeUpdate(strSQL);
    System.out.println(" 注册成功 ");
    }
    }