java - 如何在catch部分的对象中添加值?

标签 java stored-procedures

我的项目中有以下方法。当我捕获 SQLException 时,例如键“ID_UNIQUE”的重复条目“505051”,我喜欢向 obj 添加一条消息。

然而,obj.put (e.getMessage());行告诉我空指针访问:变量obj在此位置只能为空。你知道如何在 obj 中添加一个刺吗?

public JSONArray insert_patient_data(String name, String surname) {
        JSONArray obj = null;
        Connection conn = this.getDBMySQLCon();
        ResultSet rs = null;
        String queryString = "CALL insert_patient (?,?)";
        PreparedStatement preparedStmt = null;
        try {
            preparedStmt = conn.prepareCall(queryString);
            preparedStmt.setString(1, name);
            preparedStmt.setString(2, surname);


            boolean results = preparedStmt.execute();
            int rowsAffected = 0;


            conn.close();
            return obj;

        } catch (SQLException e) {
            e.printStackTrace();
            System.out.print(e.getMessage());
            obj.put (e.getMessage());
            return obj;
  }

最佳答案

问题出在 obj 上。 在第二行中,您编写了 JSONArray obj = null; 并且从未创建新的 JSONArray。 所以,当你写obj.put(e.getMessage());时,obj仍然是null!这就是您的错误消息的原因。

尝试做:

 JSONArray obj = new JSONArray();

然后,您的代码应该可以工作。

关于java - 如何在catch部分的对象中添加值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53483214/

相关文章:

php - MySQL在多对多连接中复制记录

MySQL 存储过程,游标未打开 (1326)

SQL Server 存储过程将 2 个表变量存储在 1 个表中,其中包含起始值和终止值

mysql - 如何将查询结果存入mysql的变量中

java - Joda Time : new DateTime(String) vs DateTime. 解析(字符串)

java - 从工作线程使用 RecyclerView.setAdapter

java - Photoshop 图片在 Android 应用程序开发中无法运行(使用 Eclipse)

java - Hadoop MapReduce reducer无法启动

java - Liquibase:如何在 MySQL 数据库表上设置 Charset UTF-8?

mysql - 在 MySQL 中,我可以在存储过程之外使用过程 SQL 吗?