慕诡 2020-04-12 18:07 采纳率: 100%
浏览 457
已采纳

eclipse写java查询数据的代码,ResultSet 报错 java.lang.NullPointerException?

eclipse+mysql5.7版本。

报空指针错误。

但是为啥会报错?

用statement的时候就没有报错,学用preparestatement的时候就报错了。

这是为什么?


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
import java.sql.PreparedStatement;

public class test {
    private static final String URL = "jdbc:mysql://localhost:3307/student";
    private static final String USERNAME = "root";
    private static final String PWD = "19990210";
    public static void query() {
        Connection connection = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null ; 
        try {
            // a.导入驱动,加载具体的驱动类
            Class.forName("com.mysql.jdbc.Driver");// 加载具体的驱动类
            // b.与数据库建立连接
            connection = DriverManager.getConnection(URL, USERNAME, PWD);
            // c.发送sql,执行【查】
            Scanner input= new Scanner(System.in);
            System.out.println("请输入用户名:");
            String name = input.nextLine() ;
            System.out.println("请输入年龄:");
            String age = input.nextLine() ;
            String sql = "select count(*) from stuinfo where name= ? and age =?"; 
            pstmt = connection.prepareStatement(sql);
            pstmt.setString(1, name);
            pstmt.setString(2, age);
            int count = -1;
            try {
                if(rs.next()) {
                    count = rs.getInt(1) ;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            if(count>0) {
                System.out.println("登陆成功!");
            }else {
                System.out.println("登陆失败!");
            }

        } catch (ClassNotFoundException e) {
            System.out.println("111");
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch(Exception e) {
            e.printStackTrace();
        }
        finally {
            try {
                if(rs!=null) rs.close(); 
                 if(pstmt!=null) pstmt.close();// 对象.方法
                 if(connection!=null)connection.close();
            }catch(SQLException e) {
                e.printStackTrace();
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
    }


    public static void main(String[] args) {
        query() ;
    }
}



报错

  • 写回答

1条回答 默认 最新

  • VICTOR_fusheng 2020-04-12 20:35
    关注

    在try上面加上 rs = pstmt.executeQuey(); 你都没给值当然NPE了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题