麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
765
2023-07-03
JDBC连接Mysql的方式有哪些
测试环境说明
mysql数据库:jdbc:mysql://localhost:3306/test
IDE:IDEA 2022
JDK:JDK8
mysql:mysql 5.7
JDBC:5.1.37
第一种方式
使用静态加载驱动方式,连接mysql
这种方式灵活性差,依赖性强
public void connection01() throws SQLException { // 注册驱动 Driver driver = new Driver(); // 创建Properties对象,用于保存mysql账号和密码键值对 Properties properties = new Properties(); properties.setProperty("user", "root"); properties.setProperty("password", "123456"); String url = "jdbc:mysql://localhost:3306/test"; // 得到mysql的连接 Connection connection = driver.connect(url, properties); // 得到可以与mysql语句进行交互的对象 Statement statement = connection.createStatement(); // 关闭与 mysql语句进行交互的对象 statement.close(); // 关闭与mysql的连接 connection.close();登录后复制
第二种方式
在第一种方式的基础上使用反射动态加载驱动,依赖性减小、灵活性提高
public void connection02() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException { // 使用反射动态加载mysql驱动件程序 Class> aClass = Class.forName("com.mysql.jdbc.Driver"); Driver driver = (Driver) aClass.newInstance(); // 创建Properties对象,用于保存mysql账号和密码键值对 Properties properties = new Properties(); properties.setProperty("user", "root"); properties.setProperty("password", "123456"); String url = "jdbc:mysql://localhost:3306/test"; // 得到mysql的连接 Connection connection = driver.connect(url, properties); // 得到可以与mysql语句进行交互的对象 Statement statement = connection.createStatement(); // 关闭与 mysql语句进行交互的对象 statement.close(); // 关闭与 mysql语句进行交互的对象 connection.close();}登录后复制
第三种方式
使用DriverManager统一进行管理
public void connection03() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException { // 使用反射动态加载mysql驱动件程序 Class> aClass = Class.forName("com.mysql.jdbc.Driver"); Driver driver = (Driver) aClass.newInstance(); String user = "root"; String password = "123456"; String url = "jdbc:mysql://localhost:3306/test"; // 使用DriverManager加载Driver DriverManager.registerDriver(driver); // 得到mysql的连接 Connection connection = DriverManager.getConnection(url, user, password); // 得到可以与mysql语句进行交互的对象 Statement statement = connection.createStatement(); // 关闭与 mysql语句进行交互的对象 statement.close(); // 关闭与 mysql语句进行交互的对象 connection.close();}登录后复制
第四种方式
其实Class.forName(“com.mysql.jdbc.Driver”)在底层已经自动加载好了Driver实例
所以Driver driver = (Driver) aClass.newInstance();这句话可以省略
这种方式也是开发中使用最多的一种方式
public void connection04() throws ClassNotFoundException, SQLException { // 使用反射动态加载mysql驱动件程序 Class> aClass = Class.forName("com.mysql.jdbc.Driver"); String user = "root"; String password = "123456"; String url = "jdbc:mysql://localhost:3306/test"; // 得到mysql的连接 Connection connection = DriverManager.getConnection(url, user, password); // 得到可以与mysql语句进行交互的对象 Statement statement = connection.createStatement(); // 关闭与 mysql语句进行交互的对象 statement.close(); // 关闭与 mysql语句进行交互的对象 connection.close();}登录后复制
第五种方式
mysql5.16后可以不用Class.forName(“com.mysql.jdbc.Driver”);来加载驱动了从jdk1.5以后使用了jdbc4,不再需要显示调用class.forName()注册驱动而是自动调用驱动jar包下META-INF\services\java.sql.Driver文本中的类名称去注册建议还是写上 CLass . forName(“com.mysql.jdbc.Driver”),更加明确,兼容性更好
这里同时使用properties配置文件实现动态信息动态读取,灵活性得到提升
推荐使用这种方式
src/com/mysql/mysql.properties配置文件内容如下
url=jdbc:mysql://localhost:3306/testuser=rootpassword=123456登录后复制
连接mysql程序
public void connection05() throws SQLException, ClassNotFoundException, IOException { // 使用Properties读取配置文件下的内容 Properties properties = new Properties(); properties.load(new FileInputStream("src/com/mysql/mysql.properties")); String url = properties.getProperty("url"); String user = properties.getProperty("user"); String password = properties.getProperty("password"); // 得到mysql的连接 Connection connection = DriverManager.getConnection(url, user, password); // 得到可以与mysql语句进行交互的对象 Statement statement = connection.createStatement(); // 关闭与 mysql语句进行交互的对象 statement.close(); // 关闭与 mysql语句进行交互的对象 connection.close();}登录后复制
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。