橙子cch的gravatar头像
橙子cch 2015-05-17 10:35:09

java jdbc与mysql为什么连接不上并且抛出空指针异常?

jdbc连接代码:

public class ConnDB{
     Connection conn=null;
     Statement stmt=null;
     ResultSet rs=null;
        public ConnDB(){
                try{
                        Class.forName("com.mysql.jdbc.Driver");
                }catch(java.lang.ClassNotFoundException e){
                        System.err.println(e.getMessage());
                }
        }
 /***************************************************
        *method name:    executeQuery()
        *功能:执行查询操作
        *return value: ResultSet
 * @throws ClassNotFoundException 
****************************************************/
        public  ResultSet executeQuery(String sql) {
                try{
                //    conn=getConnection();
                    // Class.forName("com.mysql.jdbc.Driver");
                    conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/database?user=root&password=root&useUnicode=true");
                    //JDBConnection connection=new JDBConnection(); 
                    //conn=connection.getConnection();
                    stmt=conn.createStatement();
                        rs=stmt.executeQuery(sql);
                }catch(Exception ex){
                        System.err.println(ex.getMessage());
                        }finally{}
                return rs;
        }
 /***************************************************
        *method name:    close()
        *功能:关闭数据库链接
        *return value:     void
****************************************************/
       public void close(){
         try {
           if (rs != null) rs.close();
         }
         catch (Exception e) {
           e.printStackTrace(System.err);
         }finally{
         try {
           if (stmt != null) stmt.close();
         }
         catch (Exception e) {
           e.printStackTrace(System.err);
         }finally{
         try {
           if (conn != null) {
             conn.close();
           }
         }
          catch (Exception e) {
           e.printStackTrace(System.err);
         }       
          
         }
       }
       }

}

查询代码:

public int checkManager(String name,String inpwd) {
    int flag = 0;
    ConnDB conn=new ConnDB();
    String sql = "SELECT * FROM admin where username='" +name + "'";
    System.out.println(sql);
    ResultSet rs = conn.executeQuery(sql);
   
    try {
        if (rs.next()) {
            String pwd = inpwd;
            if (pwd.equals(rs.getString(3))) {
                flag = 1;
                rs.last();
                int rowSum = rs.getRow();
                rs.first();
                if (rowSum != 1) {
                    flag = 0;
                    System.out.print("获取的row的值:" + sql + rowSum);
                }
            } else {
                flag = 0;
            }
        }else{
            flag = 0;
        }
    } catch (SQLException ex) {
        flag = 0;
    }
   // ConnDB.close(rs, st, conn);
    conn.close();
    return flag;
}

在  if (rs.next()) 处报空指针
所有回答列表(5)
shiyun的gravatar头像
shiyun  LV6 2015年5月17日

应该是 conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/database","root","root");

报空指针很好解决的,看下有没有相应的jar包,看数据库有没有连接上,跟踪下,检查下就知道了

橙子cch的gravatar头像
橙子cch  LV2 2015年5月17日

改了还是报同样的问题,jar报添加了与mysql连接的主要是mysql-connector-java-5.1.10-bin.jar

和ojdbc6.jar吧

charly21的gravatar头像
charly21  LV8 2015年5月19日

先明白什么是空指针异常,引用指向null,没指向对象(new xx();),然后引用打点调用就会报nullpointexception.

在  if (rs.next()) 处报空指针,很明显rs引用指向空了,你就仔细看rs就行了。

cnm的gravatar头像
cnm  LV11 2015年5月21日

问题分析:

1.数据库是本机,就不考虑数据库局域网访问权限的问题了。

2.root应该用所有表空间的访问权限。

3.rs.next(),报空指针,说明连接拿到了。

那么:

admin这个表,是不是在database这个表空间中??

mysql跟SqlServer的用法类似。

lizhejin12的gravatar头像
lizhejin12  LV2 2015年5月26日

输出一下 rs把 或者 设置断点 看一下 rs有没有值,你的rs应该为null,所以报了空指针异常

相关问答
最近浏览
a1021003714 2020年6月29日
暂无贡献等级
765105637  LV9 2020年6月24日
Quicty 2020年6月9日
暂无贡献等级
dasdsss 2020年5月7日
暂无贡献等级
longqingli 2020年4月23日
暂无贡献等级
YuYuLoveYou 2019年11月26日
暂无贡献等级
易新城  LV11 2019年10月20日
林春青  LV2 2019年9月9日
老痰酸菜丶 2019年9月3日
暂无贡献等级
1324406184  LV1 2019年6月12日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友