发布时间:2023-04-06 13:00
最近在学JDBC,这篇博客来就来巩固自己学到的知识。
首先我们讲一下JDBC使用使用条件:下载Mysql,然后安装Mysql的驱动,具体的安装方式在这就不说了,到Mysql的官网去下载。
JDBC中的五大对象
DriverManager:驱动管理对象
Connection:数据库连接对象
Statement:执行SQL语句的对象
PrepareStatement:执行SQL语句的对象,与上面的那个对象有区别,具体的区别在下面介绍
ResultSet:结果集对象
运行实例介绍:
package JDBC; import java.sql.*; public class JDBCDemo1 { public static void main(String[] args) { try { //注册驱动 告诉程序在用哪个数据库 Class.forName("com.mysql.cj.jdbc.Driver"); //建立连接 Connection connection = DriverManager.getConnection("jdbc:mysql:///student? serverTimezone=GMT&useSSL=false", "root", "yanzhiguo140710"); //建立Statement对象 Statement statement = connection.createStatement(); //执行查询语句 String sql = "SELECT * FROM goods"; //statement.executeUpdate("");//这个语句执行的是数据的增删改操作 返回的是改动的行数 ResultSet resultSet = statement.executeQuery(sql); //将查询的结果打印在窗口中 while (resultSet.next()){ int id = resultSet.getInt("id"); String name = resultSet.getString("name"); String values = resultSet.getString("value"); System.out.println(id); System.out.println(name); System.out.println(values); }//捕获异常 } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
很显然,这样做太麻烦,每次连接数据库,都要做一些重复性的操作,因此前人总结很好的方法,就是建立JDBCUtil类,这样就方便用户连接数据库和释放各种的资源,也能够减少代码的书写。
JDBCUtil类的编写:
package JDBC; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.sql.*; import java.util.Properties; public class JDBCUtil { private static String url; private static String user; private static String password; static { try { Class.forName("com.mysql.jdbc.Driver"); ClassLoader classLoader = JDBCUtil.class.getClassLoader(); InputStream resourceAsStream = classLoader.getResourceAsStream("JDBC.properties"); Properties pro = new Properties(); pro.load(resourceAsStream); url = pro.getProperty("url"); user = pro.getProperty("username"); password = pro.getProperty("password"); }catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 建立连接 * @return */ public static Connection connectinon(){ Connection conn = null; try { conn = DriverManager.getConnection(url, user, password); } catch (SQLException e) { e.printStackTrace(); } return conn; } /** * 数据库的关闭操作 * @param conn * @param pstat * @param res */ public static void close(Connection conn, PreparedStatement pstat, ResultSet res){ if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } if (pstat != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } if (res != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
JDBC.properties中的内容:driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql:///student?serverTimezone=GMT&useSSL=false username=root password=***********#数据库密码
测试类:
package JDBC; import java.sql.*; public class JDBCDemo2 { public static void main(String[] args) { Connection connectinon = JDBCUtil.connectinon(); PreparedStatement preparedStatement = null; ResultSet resultSet = null; String sql = "select * from goods"; try { preparedStatement = connectinon.prepareStatement(sql); resultSet = preparedStatement.executeQuery(); while (resultSet.next()){ System.out.print(resultSet.getString(1)); System.out.print(resultSet.getString(2)); System.out.println(resultSet.getString(3)); } } catch (SQLException e) { e.printStackTrace(); } JDBCUtil.close(connectinon,preparedStatement,resultSet); } }
这样以看是不是简单很多啊,而且能够重复调用,灵活性大,便于管理!
结果是:
这样JDBC的入门就说完了,接下来说一说数据库连接池---Druid连接池,这是阿里人员编写的数据库连接池。