JDBC的Connection和Statement对象是按引用传递还是按值传递?

问题描述 投票:0回答:2

我现在正在学习使用MySQL,并且本能地实例化和初始化Connection和Statement对象的本能如下:

public class ProjectDriver {
    public static void main(String[] args)
    {
        Connection conn = null;
        Statement stmt = null;
        Initializer.sqlInitialize(conn,stmt);
    ...
    }
...
}

sqlInitialize:

public static void sqlInitialize(Connection conn, Statement stmt) {
    try {
        conn = DriverManager.getConnection(DB_URL, USER, PASS);
        stmt = conn.createStatement();
    } 
    catch (SQLException se) {
        se.printStackTrace();
    } 
    catch (Exception e) {
        e.printStackTrace();
    }
...
}

以及稍后关闭连接和语句的sqlClose方法。

我的直觉说,在运行sqlInitialize方法之后,应将ProjectDriver中的Connection和Statement对象正确初始化为它们各自的形式,但是最肯定的不是这种情况。 Eclipse在IDE中具有空指针访问警告,并且尝试运行stmt.ExecuteUpdate(sql);时会引发NullPointerException错误。

我很确定这是一个愚蠢的问题,但是我不知道如何使用Google(或查询StackOverflow)为什么会这样。我知道我提供的代码并不是真正做我正在做的事情的正确方法,但是我很好奇为什么会这样。我对Java中的按引用传递与按值传递的理解是,所有基元都是按值传递的,而所有对象都是按引用传递的。即使返回到主类后,也不应保留对另一个类中的Connection和Statement对象所做的修改吗?

此刻我正在学习使用MySQL,实例化和初始化我的Connection和Statement对象的本能如下:public class ProjectDriver {public static void ...

java mysql jdbc pass-by-reference pass-by-value
2个回答
0
投票

Java“按值传递引用”。


0
投票

Java编程语言不支持传递引用。 JDBC是基于Java的API。

© www.soinside.com 2019 - 2024. All rights reserved.