我现在正在学习使用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“按值传递引用”。
Java编程语言不支持传递引用。 JDBC是基于Java的API。