java 只执行函数中的第二个 if 语句,但如果我使用 conn.isValid 函数 [closed],则不执行第一个语句

java only executes the second if statement in a function but not the first one if i use the conn.isValid function [closed]

提问人:Justin Hahn 提问时间:9/22/2023 最后编辑:Justin Hahn 更新时间:9/22/2023 访问量:43

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

2个月前关闭。

我有一个 Java 函数,应该检查与数据库的连接。问题是,当我调用这个函数时,总是调用第二个 if 语句,而第一个语句实际上从未被调用。

        public static void CheckConnection() {
            if (conn == null) {
                conn = Jdbc_mysql_connection.connecttodb(null);
            } if (conn.isValid(10)) {
                System.out.println("Datenbankverbindung besteht noch");
            } else {
                conn = Jdbc_mysql_connection.connecttodb(null);
            }
        }

如果我将 conn.isValid(10) 替换为 conn == null,则两者都会执行,但我无法想象 conn.isValid 函数会导致函数不再正确执行。

我试图更正格式,但它似乎是正确的。 否则它也不起作用

    public static void CheckConnection()
    {
        if (conn == null)
        {
            conn = Jdbc_mysql_connection.connecttodb(null);
        }
        else {
        if (conn.isValid(10))
        {
            System.out.println("Datenbankverbindung besteht noch");
        }
        else
        {
            conn = Jdbc_mysql_connection.connecttodb(null);
        }}
    }

只有当我这样写它时,它才有效:

    public static void CheckConnection()
    {
        if (conn == null)
        {
            conn = Jdbc_mysql_connection.connecttodb(null);
        }
        else
        {
            try
            {
                if (conn.isValid(10))
                {
                    System.out.println("Datenbankverbindung besteht noch");
                }
                else
                {
                    conn = Jdbc_mysql_connection.connecttodb(null);
                }
            }
            catch (SQLException e)
            {
                System.err.println("Fehler beim Überprüfen der Datenbankverbindung: " + e.getMessage());
            }
        }
    }
Java 函数

评论

0赞 Jorn 9/22/2023
你忘了第二个之前吗?elseif
0赞 Martheen 9/22/2023
您的IDE具有格式化/美化功能,您可能想尝试一下,看看if和else的实际设置方式。
0赞 Justin Hahn 9/22/2023
@Martheen我的 ide(eclipse) 有一个格式化功能,但它没有有效地改变我的代码)。我已经想到了这一点,但不幸的是,这也无济于事。仍然让我感到困惑的是,一旦我替换了 conn.isvalid,该函数就会正确执行。
0赞 Tim Moore 9/22/2023
与其说“有效”和“不起作用”,不如准确说明发生了什么(粘贴异常消息和堆栈跟踪,如果有的话)以及您想要发生什么。
1赞 Tim Moore 9/22/2023
另外,请告诉我们确切的作用。我的猜测是它正在回归.Jdbc_mysql_connection.connecttodb(null)null

答:

0赞 Ketan 9/22/2023 #1

如果有多个语句,则始终会调用它们。但是,是否执行语句的正文取决于条件。if

如果您不想执行剩余的 if 语句,则必须查看保护条件