zoukankan      html  css  js  c++  java
  • 【小白日记】Java中关于使用JDBC连接Mysql数据库的笔记整理

    JDBC

    JAVA Database Connectivity java 数据库连接

    • 为什么会出现JDBC

    SUN公司提供的一种数据库访问规则、规范, 由于数据库种类较多,并且java语言使用比较广泛,sun公司就提供了一种规范,让其他的数据库提供商去实现底层的访问规则。 我们的java程序只要使用sun公司提供的jdbc驱动即可。

    前期的准备

    • 下载mysql 的JDBC jar包
    • 新建工程并导入jar build path一下
    • 安装Mysql数据库并建立一个数据库以及表

    使用JDBC的基本步骤

    1. 注册驱动
    DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    
    1. 建立连接
    //2. 建立连接 参数一: 协议 + 访问的数据库 , 参数二: 用户名 , 参数三: 密码。
       	conn = DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "root");
    
    
    1. 创建statement
    //3. 创建statement , 跟数据库打交道,一定需要这个对象
       	st = conn.createStatement();
    
    
    1. 执行sql ,得到ResultSet
    //4. 执行查询 , 得到结果集
       		String sql = "select * from t_stu";
       		rs = st.executeQuery(sql);
    
    1. 遍历结果集
    //5. 遍历查询每一条记录
            	while(rs.next()){
            		int id = rs.getInt("id");
            		String name = rs.getString("name");
            		int age = rs.getInt("age");
            		System.out.println("id="+id + "===name="+name+"==age="+age);
            		}
    
    1. 释放资源
    		if (rs != null) {
    	        try {
    	            rs.close();
    	        } catch (SQLException sqlEx) { } // ignore 
    	        rs = null;
    	    }
    

    JDBC 工具类构建

    1. 资源释放工作的整合

    2. 驱动防二次注册

      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      Driver 这个类里面有静态代码块,一上来就执行了,所以等同于我们注册了两次驱动。 其实没这个必要的。
      //静态代码块 —> 类加载了,就执行。 java.sql.DriverManager.registerDriver(new Driver());
      最后形成以下代码即可。

    	Class.forName("com.mysql.jdbc.Driver");	
    

    全部代码整理

    MainTest.java

    package com.sky.jdbc;
    
    import java.sql.Connection;
    import java.sql.Driver;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import com.sky.util.JDBCUtill;
    
    public class MainTest {
    
    	public static void main(String[] args) {
    		
    		Connection conn = null;
    		Statement st = null;
    		ResultSet rs = null;
    		
    		try {
    			//1. 注册驱动
    			
    			Class.forName("com.mysql.jdbc.Driver");
    			//源文件当中 静态代码快 ---> 类加载,就执行java.sql.DriverManager.registerDriver(new Driver());
    			//重复注册两次驱动 没必要
    			//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    			
    			//2.建立连接 
    			conn = DriverManager.getConnection("jdbc:mysql://localhost/student", "root","");
    		
    			//3.创建statement, 跟数据库打交道 一定需要statement
    			st = conn.createStatement(); 
    			
    			//4.执行查询
    			String sql = "select * from stu_list";
    			rs = st.executeQuery(sql);
    			
    			//5. 遍历每一行纪录
    			while(rs.next()) {
    				int id = rs.getInt("id");
    				String name = rs.getString("name");
    				int age = rs.getInt("age");
    				
    				System.out.println("id=" + id + ";name=" + name + ";age" + age);
    				
    			}
    		
    			
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally {
    			JDBCUtill.release(conn, st, rs);
    			
    		}
    
    	}
    
    }
    
    

    JDBCUtill.java

    package com.sky.util;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class JDBCUtill {
    	
    	public static void release(Connection conn , Statement st , ResultSet rs) {
    		closeRs(rs);
    		closeSt(st);
    		closeConn(conn);
    		
    	}
    
    	private static void closeRs(ResultSet rs) {
    		try {
    			if(rs != null) {
    				rs.close();
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally {
    			rs = null;
    		}
    	}
    	
    	private static void closeSt(Statement st) {
    		try {
    			if(st != null) {
    				st.close();
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally {
    			st = null;
    		}
    	}
    	
    	private static void closeConn(Connection conn) {
    		try {
    			if(conn != null) {
    				conn.close();
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally {
    			conn = null;
    		}
    	}
    }
    
    
  • 相关阅读:
    XML错误信息Referenced file contains errors (http://www.springframework.org/schema/beans/spring-beans-4.0.xsd). For more information, right click on the message in the Problems View ...
    Description Resource Path Location Type Cannot change version of project facet Dynamic Web Module to 2.3.
    maven创建web报错Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:maven-compiler-plugin:maven-compiler-plugin:3.5.1:runtime Cause: error in opening zip file
    AJAX跨域
    JavaWeb学习总结(转载)
    JDBC学习笔记
    Java动态代理之JDK实现和CGlib实现
    (转)看懂UML类图
    spring boot配置使用fastjson
    python3下django连接mysql数据库
  • 原文地址:https://www.cnblogs.com/WeiHaoLee/p/10823336.html
Copyright © 2011-2022 走看看