Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们知道我们不能创建接口对象,但我们如何在jdbc中创建语句对象或PrepareStatement?_Java - Fatal编程技术网

Java 我们知道我们不能创建接口对象,但我们如何在jdbc中创建语句对象或PrepareStatement?

Java 我们知道我们不能创建接口对象,但我们如何在jdbc中创建语句对象或PrepareStatement?,java,Java,创建的对象属于实现该接口的类。实际类别取决于驱动程序 getConnection()和createStatement()都是工厂方法。您可以编写使用接口的代码,但实际的类是实现该特定数据库功能的类 DriverManager.getConnection()的一个(不是真的)实现如下所示: Connection con = DriverManager.getConnection(url+db,username,password); Statement st = con.createStatemen

创建的对象属于实现该接口的类。实际类别取决于驱动程序

getConnection()
createStatement()
都是工厂方法。您可以编写使用接口的代码,但实际的类是实现该特定数据库功能的类

DriverManager.getConnection()
的一个(不是真的)实现如下所示:

Connection con = DriverManager.getConnection(url+db,username,password);
Statement st = con.createStatement();
实际上,实际的类是动态加载的,因此它不需要位于编译时类路径中。加载适当的类(如果找不到合适的类,则抛出错误)并返回。从此以后,
MySQLConnection
类将返回一个
MySQLStatement
,以此类推

您可以这样编写代码:

public Connection getConnection(String url, String username, String password) {
    if(url.startsWith("jdbc:mysql:") // We have MySQL
       return new MySQLConnection();
    else if(url.startsWith("SomethingElse")
       return new OtherConnection();
}

但这会使您的代码特定于数据库。在某些情况下,如果
MySQLConnection
类允许一些不在
Connection
接口中的功能,则这是有保证的,但在大多数情况下,您只想处理
java.sql.Connection
接口,而不关心实际使用的是哪个数据库。

创建的对象属于实现该接口的类。实际类别取决于驱动程序

getConnection()
createStatement()
都是工厂方法。您可以编写使用接口的代码,但实际的类是实现该特定数据库功能的类

DriverManager.getConnection()
的一个(不是真的)实现如下所示:

Connection con = DriverManager.getConnection(url+db,username,password);
Statement st = con.createStatement();
实际上,实际的类是动态加载的,因此它不需要位于编译时类路径中。加载适当的类(如果找不到合适的类,则抛出错误)并返回。从此以后,
MySQLConnection
类将返回一个
MySQLStatement
,以此类推

您可以这样编写代码:

public Connection getConnection(String url, String username, String password) {
    if(url.startsWith("jdbc:mysql:") // We have MySQL
       return new MySQLConnection();
    else if(url.startsWith("SomethingElse")
       return new OtherConnection();
}

但这会使您的代码特定于数据库。在某些情况下,如果
MySQLConnection
类允许一些不在
Connection
接口中的功能,则这是有保证的,但在大多数情况下,您只想处理
java.sql.Connection
接口,而不关心实际使用的是哪个数据库。

创建的对象属于实现该接口的类。实际类别取决于驱动程序

getConnection()
createStatement()
都是工厂方法。您可以编写使用接口的代码,但实际的类是实现该特定数据库功能的类

DriverManager.getConnection()
的一个(不是真的)实现如下所示:

Connection con = DriverManager.getConnection(url+db,username,password);
Statement st = con.createStatement();
实际上,实际的类是动态加载的,因此它不需要位于编译时类路径中。加载适当的类(如果找不到合适的类,则抛出错误)并返回。从此以后,
MySQLConnection
类将返回一个
MySQLStatement
,以此类推

您可以这样编写代码:

public Connection getConnection(String url, String username, String password) {
    if(url.startsWith("jdbc:mysql:") // We have MySQL
       return new MySQLConnection();
    else if(url.startsWith("SomethingElse")
       return new OtherConnection();
}

但这会使您的代码特定于数据库。在某些情况下,如果
MySQLConnection
类允许一些不在
Connection
接口中的功能,则这是有保证的,但在大多数情况下,您只想处理
java.sql.Connection
接口,而不关心实际使用的是哪个数据库。

创建的对象属于实现该接口的类。实际类别取决于驱动程序

getConnection()
createStatement()
都是工厂方法。您可以编写使用接口的代码,但实际的类是实现该特定数据库功能的类

DriverManager.getConnection()
的一个(不是真的)实现如下所示:

Connection con = DriverManager.getConnection(url+db,username,password);
Statement st = con.createStatement();
实际上,实际的类是动态加载的,因此它不需要位于编译时类路径中。加载适当的类(如果找不到合适的类,则抛出错误)并返回。从此以后,
MySQLConnection
类将返回一个
MySQLStatement
,以此类推

您可以这样编写代码:

public Connection getConnection(String url, String username, String password) {
    if(url.startsWith("jdbc:mysql:") // We have MySQL
       return new MySQLConnection();
    else if(url.startsWith("SomethingElse")
       return new OtherConnection();
}

但这会使您的代码特定于数据库。在某些情况下,如果
MySQLConnection
类允许一些不在
Connection
接口中的功能,但在大多数情况下,您只想处理
java.sql.Connection
接口,而不关心实际使用的是哪个数据库,那么这是有保证的。

显示一个简单的示例。(并得到+1)举例来说,这是怎么回事?它与annonymous innerclass有关吗?一点也不。它与动态类加载有关。显示一个简单的示例。(并得到+1)举例来说,这是怎么回事?它与annonymous innerclass有关吗?一点也不。它与动态类加载有关。显示一个简单的示例。(并得到+1)举例来说,这是怎么回事?它与annonymous innerclass有关吗?一点也不。它与动态类加载有关。显示一个简单的示例。(并得到+1)举例来说,这是怎么回事?它与annonymous innerclass有关吗?一点也不。它与动态类加载有关。