【问题标题】:NullPointerException when executing rs = stmt.executeQuery(queryData)执行 rs = stmt.executeQuery(queryData) 时出现 NullPointerException
【发布时间】:2023-04-05 02:28:01
【问题描述】:

我正在尝试连接到 Sybase ASE 数据库。当我检索数据时,我在 rs = stmt.executeQuery(queryData); 上得到 NullPointerException。
我用 dbVisualizer 尝试了相同的查询,但那里一切正常。

static void retrieveData() {
   try {
       String queryData="SELECT * FROM med WHERE item_id like 'A00001'";
       // process the results.
       rs = stmt.executeQuery(queryData);
       while (rs.next()) {
            String s = rs.getString("item_naam");
            String n = rs.getString("item_mnemo");
            System.out.println(s + "   " + n);
       }
   }catch(SQLException ex) {
       System.err.println("RetrieveData: " + ex.getMessage()+ " sqlstate = " +
                ex.getSQLState());
       System.exit(1);
   }

【问题讨论】:

标签: java database nullpointerexception sap-ase


【解决方案1】:

stmt 对象可能未初始化。

【讨论】:

  • 我的成绩如下:public class BcfiConnection { static Connection con; static Statement stmt; static ResultSet rs;
  • 那是声明,不是初始化。您需要创建一个连接,然后使用它来创建语句。
【解决方案2】:

问题似乎是stmt没有初始化,我假设你至少已经定义了变量stmt,否则开发环境会报错。

有很多 NullpointerExceptions 由于未初始化变量而导致,我的意思是您定义它然后忘记初始化它,这是一个很好的建议(如果您没有内存问题并且您可能会忘记初始化变量)同时做这两件事。

你可以这样做:

 Statement s = c.createStatement();
  rs = s.executeQuery(queryData);

请记住 c 之前已初始化且 rs 已在之前定义...

【讨论】:

  • 非常感谢我做了如下:try { con = DriverManager.getConnection(url, user, password); stmt = con.createStatement(); System.out.println("Connection has been established"); } catch (SQLException ex) { System.err.println("database connection: " + ex.getMessage()+"SQLState: "+ex.getSQLState()); }
猜你喜欢
  • 2019-04-25
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
  • 2014-10-31
  • 1970-01-01
  • 2019-03-24
  • 1970-01-01
  • 2021-11-14
相关资源
最近更新 更多