import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
/**
*
* @author qyf
*
*/
public class IPv6JdbcUtil {
public static void main(String[] args) {
try {
boolean ipv6 = true;
testDb2Connection(ipv6);
testMySQLConnection(ipv6);
testOracleConnection(ipv6);
testSqlServerConnection(ipv6);
testSybaseConnection(ipv6);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* ipv4 Driver URL:
* jdbc:mysql://127.0.0.1:3306/database
* ipv6 Driver URL:
* jdbc:mysql://address=(protocol=tcp)(host=2001:470:23:13::6)(port=3306)/database
*
* Deiver package version 5.1.31 以上
*
* @throws ClassNotFoundException
* @throws SQLException
*
*/
public static void testMySQLConnection(boolean ipv6) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
String jdbcIpv4Url = "jdbc:mysql://127.0.0.1:3306/databaseName";
String jdbcIpv6Url = "jdbc:mysql://address=(protocol=tcp)(host=2001:470:23:13::6)(port=3306)/database";
String jdbcUrl = ipv6 ? jdbcIpv6Url : jdbcIpv4Url;
Properties jdbcProperties = new Properties();
jdbcProperties.put("user", "dbuser");
jdbcProperties.put("password", "db_password");
Connection connection = DriverManager.getConnection(jdbcUrl);
System.out.println(connection);
}
/**
* jdbc:db2://[fec0:ffff:ffff:8000:20e:cff:fe50:39c8]:50000/sample
* jdbc:db2://192.168.10.10:50000/sample
*
* Deiver package version
* <dependency>
* <groupId>com.ibm.db2</groupId>
* <artifactId>db2jcc4</artifactId>
* <version>10.1</version>
* </dependency>
*/
public static void testDb2Connection(boolean ipv6) throws ClassNotFoundException, SQLException {
Class.forName("com.ibm.db2.jcc.DB2Driver");
String jdbcIpv4Url = "jdbc:db2://192.168.10.10:50000/sample";
String jdbcIpv6Url = "jdbc:db2://[2001:470:23:13::6]:50000/sample";
String jdbcUrl = ipv6 ? jdbcIpv6Url : jdbcIpv4Url;
Properties jdbcProperties = new Properties();
jdbcProperties.put("user", "dbuser");
jdbcProperties.put("password", "db_password");
Connection connection = DriverManager.getConnection(jdbcUrl);
System.out.println(connection);
}
/**
*
* ipv4 Driver URL:
* jdbc:oracle:thin:@//127.0.0.1:3306/orcl
*
* ipv6 Driver URL:
* jdbc:oracle:thin:@(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=[fe80::5cf:72])(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=fnstdb1)))
*
* @see http://stackoverflow.com/questions/10647845/does-oracle-11gr2-actually-support-ipv6
*
* Deiver package version
* <dependency>
* <groupId>com.oracle</groupId>
* <artifactId>ojdbc14</artifactId>
* <version>10.2.0.3.0</version>
* </dependency>
*/
public static void testOracleConnection(boolean ipv6) throws ClassNotFoundException, SQLException {
Class.forName("oracle.jdbc.OracleDriver");
String jdbcIpv4Url = "jdbc:oracle:thin:@//127.0.0.1:3306/orcl";
String jdbcIpv6Url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=[fe80::5cf:72])(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=fnstdb1)))";
String jdbcUrl = ipv6 ? jdbcIpv6Url : jdbcIpv4Url;
Properties jdbcProperties = new Properties();
jdbcProperties.put("user", "dbuser");
jdbcProperties.put("password", "db_password");
Connection connection = DriverManager.getConnection(jdbcUrl);
System.out.println(connection);
}
/**
* ipv4 Driver URL:
* jdbc:jtds:sqlserver://127.0.0.1:1433/master
* ipv6 Driver URL:
* jdbc:jtds:sqlserver://
*
* Deiver package version
* <dependency>
* <groupId>net.sourceforge.jtds</groupId>
* <artifactId>jtds</artifactId>
* <version>1.2.4</version>
* </dependency>
*
*/
public static void testSqlServerConnection(boolean ipv6) throws ClassNotFoundException, SQLException {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
String jdbcIpv4Url = "jdbc:jtds:sqlserver://127.0.0.1:1433/master";
String jdbcIpv6Url = "jdbc:jtds:sqlserver://";
String jdbcUrl = ipv6 ? jdbcIpv6Url : jdbcIpv4Url;
Properties jdbcProperties = new Properties();
jdbcProperties.put("user", "dbuser");
jdbcProperties.put("password", "db_password");
if (ipv6) {
jdbcProperties.put("portNumber", 1433);
jdbcProperties.put("instanceName ", "master");
jdbcProperties.put("serverName", "2001:470:23:13::6");
}
Connection connection = DriverManager.getConnection(jdbcUrl);
System.out.println(connection);
}
/**
* ipv4 Driver URL:
* jdbc:jtds:sybase://127.0.0.1:1433/master
* ipv6 Driver URL:
* jdbc:jtds:sybase://
*
* Deiver package version
* <dependency>
* <groupId>net.sourceforge.jtds</groupId>
* <artifactId>jtds</artifactId>
* <version>1.2.4</version>
* </dependency>
*
*/
public static void testSybaseConnection(boolean ipv6) throws ClassNotFoundException, SQLException {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
String jdbcIpv4Url = "jdbc:jtds:sybase://127.0.0.1:1433/master";
String jdbcIpv6Url = "jdbc:jtds:sybase://";
String jdbcUrl = ipv6 ? jdbcIpv6Url : jdbcIpv4Url;
Properties jdbcProperties = new Properties();
jdbcProperties.put("user", "dbuser");
jdbcProperties.put("password", "db_password");
if (ipv6) {
jdbcProperties.put("portNumber", 1433);
jdbcProperties.put("instanceName ", "master");
jdbcProperties.put("serverName", "2001:470:23:13::6");
}
Connection connection = DriverManager.getConnection(jdbcUrl);
System.out.println(connection);
}
}
java使用jdbc ipv6方式连接数据库
最新推荐文章于 2024-06-07 16:39:02 发布