• 【小白日记】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;
    		}
    	}
    }
    
    
  • 相关阅读:
    采用NAND Flash启动时出现Kernel panic not syncing: No init found错误
    ubuntu 11.10 安装小企鹅fcitx输入法
    UBoot中设定的bootdelay参数不起作用
    python 数据类型
    python运算符
    python符号//、%和/运算
    pytho 基本数据类型
    Python 开篇
    mmsplayer v2 java 之(mmsPlayer 播放类)
    mmsplayer v2 java 之(mmsTrack 音频类)
  • 原文地址:https://www.cnblogs.com/WeiHaoLee/p/10823336.html
Copyright © 2020-2023  润新知