繁体   English   中英

Android:java.sql.SQLException:结果集中没有当前行

[英]Android :java.sql.SQLException: No current row in the ResultSet

当我尝试执行查询时出现以下错误,但我不知道为什么每次尝试执行查询时都会出现以下错误。该错误也出现在我的 logcat 和不像我预期的那样敬酒。

这是我的代码!!

  @Override
        protected String doInBackground(String... strings)  // Connect to the database, write query and add items to array list
        {
            runOnUiThread(new Runnable() {
                public void run() {


                    try {
                        Connection conn = connectionClass.CONN(); //Connection Object
                        if (conn == null) {
                            success = false;
                            msg = "Sorry something went wrong,Please check your internet connection";
                        } else {
                            // Change below query according to your own database.
                            Date c = Calendar.getInstance().getTime();
                            SimpleDateFormat df = new SimpleDateFormat("yyyy/mm/dd");
                            String formattedDate = df.format(c);
                            System.out.println("it isssssssssssssssssssssssssssssssssssssssssaaaaaaaaaaaaaaaaaaaa"+getIntent().getStringExtra("nameid"));
                            String query = "Insert into CustomerSupportChat values('" + formattedDate + "','" + themsg.getText().toString() + "','Customer','3','"+getIntent().getStringExtra("nameid")+"','1','1') " +
                                    "Select MessageID,MessageDate,MessageText,SenderType,MessageRecieved,MessageReaded,Users_Login_Data.Username,StoresData.StoreEnglishName,StoresData.StoreArabicName FROM " +
                                    "CustomerSupportChat INNER JOIN Users_Login_Data ON " +
                                    "CustomerSupportChat.CustomerID = Users_Login_Data.CustomerID INNER JOIN StoresData ON " +
                                    "CustomerSupportChat.StoreID = StoresData.StoreID";
                            String query2 =
                                    "Select MessageID,MessageDate,MessageText,SenderType,MessageRecieved,MessageReaded,Users_Login_Data.Username,StoresData.StoreEnglishName,StoresData.StoreArabicName FROM " +
                                    "CustomerSupportChat INNER JOIN Users_Login_Data ON " +
                                    "CustomerSupportChat.CustomerID = Users_Login_Data.CustomerID INNER JOIN StoresData ON " +
                                    "CustomerSupportChat.StoreID = StoresData.StoreID Where SenderType = 'Store'";

                            Statement stmt = conn.createStatement();
                            Statement stmt2 = conn.createStatement();
                            ResultSet rs = stmt.executeQuery(query);
                            ResultSet rs2 = stmt2.executeQuery(query2);


                            if (rs != null) // if resultset not null, I add items to itemArraylist using class created
                            {
                                while (rs.next()) {

                                    try {
                                        itemArrayList.add(new ClassListChat(rs.getString("MessageDate"), rs.getString("MessageText"), rs.getString("SenderType"), rs2.getString("MessageText")));
                                        themsg.setText("");
                                    } catch (Exception ex) {
                                        ex.printStackTrace();
                                    }
                                }

                                msg = "Found";
                                success = true;
                            } else {
                                msg = "No Data found!";
                                success = false;
                            }
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        Writer writer = new StringWriter();
                        e.printStackTrace(new PrintWriter(writer));
                        msg = writer.toString();
                        Log.d("Error", writer.toString());
                        success = false;
                    }

                }
            });
            return msg;
        }

我尝试删除 while 并用 if 语句替换它,但它向我显示了同样的错误。 我还在 mssql 上尝试了我的查询并成功执行。

编辑我通过将日期格式更改为 MM/dd/yyyy 来解决它。 但现在我收到以下错误:

java.sql.SQLException: No current row in the ResultSet.

有任何想法吗?

看起来在下面的行中没有 null 检查 rs2 所以可能会抛出该错误:

itemArrayList.add(new ClassListChat(rs.getString("MessageDate"), rs.getString("MessageText"), rs.getString("SenderType"), rs2.getString("MessageText")));

还有一个更好的方法来检查ResultSet不返回任何东西是这样的:

if (rs.next() == false){ 
    msg = "No Data found!";
    success = false;
} else { 
    do { 
        // add items to itemArraylist...
    } while (rs.next());
}

阅读更多: https://javarevisited.blogspot.com/2016/10/how-to-check-if-resultset-is-empty-in-Java-JDBC.html#ixzz6KIFZZHNB

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM