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

埃利·K

我现在正在学习使用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();
    }
...
}

以及稍后关闭Connection和Statement的sqlClose方法。

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

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

汤姆·霍顿-大头钉

Java“按值传递引用”。

如果在方法内分配参数,则不会影响调用方。但是,如果修改参数所指向的对象,则引用该对象的每个变量都将看到修改(如果是多线程的,则在内存模型的限制之内)。

对于处理资源,如JDBCConnectionStatement你一般会想使用执行周围成语

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

python pandas dataframe,是按值传递还是按引用传递

在Java中是按值传递数组还是按引用传递数组?

困惑,当对象引用被传递时,java是使用按值调用还是按引用调用?

按值传递vs按右值引用传递

在Javascript中按值传递和按引用传递

Kotlin是“按值传递”还是“按引用传递”?

在C#中按引用或值传递对象

在C ++中按值传递还是按常量引用传递更好?

Ruby是按引用传递还是按值传递?

PHP变量是按值还是按引用传递?

在C#中,我应该按值传递参数并返回相同的变量,还是按引用传递?

我应该按引用还是按值传递大型数组?

vala是“按引用传递”还是“按值传递”?

Swift函数是按值还是按引用分配/传递?

复制赋值运算符应该按const引用还是按值传递?

.bind(this)是按引用还是按值传递?

ELM是按引用传递还是按值传递?

在python中自定义类对象的参数传递:按引用调用还是按值调用求值?

我应该按值还是按引用传递函数对象?

可移动但不可复制的对象:按值传递还是按引用传递?

Array.find是否返回值或引用?我的意思是按值传递还是按引用传递?

c#对象按引用传递或按值传递

在.NET中,是按值或按引用传递的类对象

按引用传递(指向对象的指针的向量)是否比按值传递更快?

python递归通过引用还是按值传递?

在Android Adapter中按值传递和按引用传递?

如果 VAR_INPUT 是 INTERFACE 类型,那么值是按引用传递还是按值传递?

Pandas 和对按值传递和按引用传递的混淆

Java中的“按值传递”还是“按引用传递”?