JDBC的概念

image.png
image.png

  1. public class JDBCDemo {
  2. public static void main(String[] args) throws ClassNotFoundException, SQLException {
  3. //注册驱动
  4. Class.forName("com.mysql.jdbc.Driver");
  5. //获取连接数据库对象
  6. Connection con = DriverManager.getConnection("jdbc:mysql://192.168.23.129:3306/db4", "root", "itheima888");
  7. //获取执行对象
  8. Statement stat=con.createStatement();
  9. //执行sql语句,并返回对象
  10. String sql="SELECT * FROM user";
  11. ResultSet rs=stat.executeQuery(sql);
  12. //处理结果
  13. while(rs.next()){
  14. System.out.println(rs.getInt("id") +"\t"+rs.getString("name"));
  15. }
  16. //释放资源
  17. rs.close();
  18. stat.close();
  19. con.close();
  20. }
  21. }

功能类详解:

1.DreverManger

DreverManger功能类的两种方法如下:

注册驱动 和 获取数据库连接

image.png
image.png

connection功能类

image.png

Statement功能类

image.png

ResultSet功能类

image.png
image.png
1.编写配置文件

  1. driverClass=com.mysql.jdbc.Driver
  2. url=jdbc:mysql://192.168.23.129:3306/db14
  3. username=root
  4. password=itheima888

2.编写jdbc工具类

  1. public class JDBCUtils {
  2. //私有构造方法
  3. private JDBCUtils() {
  4. }
  5. //声明所需要的配置变量
  6. private static String driverClass;
  7. private static String url;
  8. private static String username;
  9. private static String password;
  10. //提供静态代码块,读取配置文件并赋值
  11. static {
  12. try {
  13. //获取配置文件
  14. InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("config.properties");
  15. //创建集合将配置文件装入集合
  16. Properties prop = new Properties();
  17. prop.load(is);
  18. //通过键拿到值
  19. driverClass = prop.getProperty("driverClass");
  20. url = prop.getProperty("url");
  21. username = prop.getProperty("username");
  22. password = prop.getProperty("password");
  23. //注册驱动
  24. Class.forName(driverClass);
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. //提供静态的获取数据库连接方法
  30. public static Connection getConnection() throws SQLException {
  31. return DriverManager.getConnection(url, username, password);
  32. }
  33. //提供静态的释放资源的方法
  34. public static void close(ResultSet rs, Statement stat, Connection con){
  35. if(rs != null){
  36. try {
  37. rs.close();
  38. } catch (SQLException e) {
  39. e.printStackTrace();
  40. }
  41. }
  42. if(stat != null){
  43. try {
  44. stat.close();
  45. } catch (SQLException e) {
  46. e.printStackTrace();
  47. }
  48. }
  49. if(con != null){
  50. try {
  51. con.close();
  52. } catch (SQLException e) {
  53. e.printStackTrace();
  54. }
  55. }
  56. }
  57. //重载释放资源方法
  58. public static void close( Statement stat, Connection con){
  59. if(stat != null){
  60. try {
  61. stat.close();
  62. } catch (SQLException e) {
  63. e.printStackTrace();
  64. }
  65. }
  66. if(con != null){
  67. try {
  68. con.close();
  69. } catch (SQLException e) {
  70. e.printStackTrace();
  71. }
  72. }
  73. }
  74. }

连接池

自定义数据库连接池(DataSource)

image.png
image.png