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

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 时间序列LSTM模型归回预测代码问题
  • ¥50 使用CUDA如何高效的做并行化处理,是否可以多个分段同时进行匹配计算处理?目前数据传输速度有些慢,如何提高速度,使用gdrcopy是否可行?请给出具体意见。
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),如何通过环岛的原理及完整代码
  • ¥20 机器学习或深度学习问题?困扰了我一个世纪,晚来天欲雪,能饮一杯无?
  • ¥15 c语言数据结构高铁订票系统
  • ¥15 关于wkernell.PDB加载的问题,如何解决?(语言-c#|开发工具-vscode)
  • ¥15 (标签-STM32|关键词-智能小车)
  • ¥20 关于#stm32#的问题,请各位专家解答!
  • ¥15 (标签-python)