为了账号安全,请及时绑定邮箱和手机立即绑定

准备好的语句中的空指针异常

准备好的语句中的空指针异常

炎炎设计 2021-09-29 15:04:48
我在尝试从我的 sql 服务器获取数据时遇到了一个问题,他们在准备好的语句中给出了一个空点异常。我确定这一定是一个菜鸟问题,但请帮忙:)这是我正在调用的方法public void notification(){    int MachCode = 1721;    try{        String sql ="Select TimeOn from PRODUCTIONS_MONITOR where MachCode='"+MachCode+"'";        pst = con.prepareStatement(sql);        rs = pst.executeQuery();        while(rs.next()){            arrCount.add(rs.getInt(1));        }        for(int i=0;i<arrCount.size();i++){             Count = Count + arrCount.get(i);        }        if(Count % 10 == 0){            System.out.println("Time = " + Count);        }    }catch(SQLException e){        e.printStackTrace();    }}这是我的数据库连接  public static Connection ConnecrDb() {    try {        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");        Connection con = DriverManager.getConnection("jdbc:sqlserver://10.228.59.2:1433;databaseName=dbNautilus;user=SA;password=KreedaIntimo@2017;");        System.out.println("Connected to database !");    } catch (SQLException sqle) {        System.out.println("Sql Exception :" + sqle.getMessage());    } catch (ClassNotFoundException e) {        System.out.println("Class Not Found Exception :" + e.getMessage());    }    return null;}
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

您的ConnecrDb()方法将新Connection对象分配给名为的局部变量con,然后从不使用它。


然后该方法返回null。


您没有展示如何调用方法,但这确实无关紧要,因为方法使用的con 字段notification()要么未分配(因此null),要么分配了null来自的返回值ConnecrDb(),因此null无论哪种方式。


鉴于此,您为什么对 value isnull和导致 a感到困惑NullPointerException?


关于您的代码的其他一般性评论:


如果MachCode是一个整数,那么你为什么要在 SQL 中引用它,即为什么where MachCode='"+MachCode+"'";而不是where MachCode="+MachCode;?


如果您正在使用PreparedStatement,为什么不使用?参数标记,因为它们是要使用的?


使用 JDBC 时应该使用 try-with-resources。


Java 命名约定是变量名以小写字母开头。


你的代码应该是:


int machCode = 1721;

String sql = "select TimeOn from PRODUCTIONS_MONITOR where MachCode = ?";

try (PreparedStatement pst = con.prepareStatement(sql)) {

    pst.setInt(1, machCode);

    try (ResultSet rs = pst.executeQuery()) {

        while (rs.next()) {

            arrCount.add(rs.getInt(1));

        }

    }

}

// rest of code here


查看完整回答
反对 回复 2021-09-29
  • 1 回答
  • 0 关注
  • 164 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信