JDBC操作数据库实例

jdbc操作数据库实例

1.jdbc创建数据库

1.1 前提条件

  1.拥有创建和删除表的权限

  2.数据库已经启动,且可用

1.2 jdbc创建数据库表的步骤:  

  • 导包:导入需要进行数据库编程的 JDBC 类的包。大多数情况下,使用 import java.sql. 就足够了。

  • 注册 JDBC 驱动程序:初始化驱动程序,使之可以与数据库打开通信通道。
  • 获取连接:需要使用 DriverManager.getConnection() 方法创建一个 Connection 对象,它代表与数据库服务器的物理连接。
  • 建数据库:使用类型声明的对象建立并提交一个 建数据库SQL 语句到数据库。
  • 释放资源:手动释放资源,依靠 JVM 垃圾收集器可以明确地回收所有的数据库资源。

创建数据库实例:创建jdbc数据库:

 java源码:

package com.hejh.day0509;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.hejh.util.JDBCUtil;

public class JDBCCreateDatabase {
    @Test
    public void createDatabase() {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        
        try {
            //使用JDBCUtil工具类,获取连接对象(包括注册驱动,工具类已经实现)
            conn = JDBCUtil.getConnection();
            st = conn.createStatement();
            String sql   = "create database jdbc character set utf8";
            int  i = st.executeUpdate(sql);
            System.out.println("建立数据库成功,影响了:"+i+"行");
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtil.closeResourse(conn, st, rs);
        }  
    }
}

JDBCUtil工具类源码:

package com.hejh.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCUtil {
    final static String driver = "com.mysql.jdbc.Driver";
  //在这里要注意,不是具体连接到某个具体的数据库下,是在当前用户下创建JDBC数据库
final static String url = "jdbc:mysql://localhost/?useUnicode=true&characterEncoding=UTF-8"; final static String user = "root"; final static String password = "root"; Connection conn = null; PreparedStatement ps = null; Statement st = null; ResultSet rs = null; /**获取连接*/ public static Connection getConnection() throws SQLException { Connection conn = null; try { //注册驱动 Class.forName(driver); //获取连接 conn = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } return conn; } /**关闭资源closeResourse(conn,st,rs)*/ public static void closeResourse(Connection conn,Statement st,ResultSet rs) { try { if(rs!=null) { rs.close(); }else { rs = null; } } catch (SQLException e) { e.printStackTrace(); } try { if(st!=null) { st.close(); }else { st = null; } } catch (SQLException e) { e.printStackTrace(); } try { if(conn!=null) { conn.close(); }else { conn = null; } } catch (SQLException e) { e.printStackTrace(); } } /**关闭资源closeResourse(conn,ps,rs)*/ public static void closeResourse(Connection conn,PreparedStatement ps,ResultSet rs) { try { if(rs!=null) { rs.close(); }else { rs = null; } } catch (SQLException e) { e.printStackTrace(); } try { if(ps!=null) { ps.close(); }else { ps = null; } } catch (SQLException e) { e.printStackTrace(); } try { if(conn!=null) { conn.close(); }else { conn = null; } } catch (SQLException e) { e.printStackTrace(); } } }

 数据库显示为:

 2.jdbc切换数据库

 java源码:

package com.hejh.day0509;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.hejh.util.JDBCUtil;

public class JDBCChangeDatabase {    
    @Test
    public void createDatabase() {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        
        try {
            //使用JDBCUtil工具类,获取连接对象(包括注册驱动,工具类已经实现)
            conn = JDBCUtil.getConnection();
            st = conn.createStatement();
            //切换(选择)数据库;或者在url中把数据库写死
            String sql = "use jdbc";
            int  i = st.executeUpdate(sql);
            System.out.println("切换数据库成功,影响了:"+i+"行");
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtil.closeResourse(conn, st, rs);
        }        
    }
}

工具类JDBCUtil.java,略

3.jdbc删除数据库

在Connection对象的参数url的数据库名,必须和你要删除的数据库名一致,这样才能删除,即:

url = "jdbc:mysql://localhost/jdbc?useUnicode=true&characterEncoding=UTF-8";  

//删除数据库;
String sql = "drop database jdbc";

java源码:

package com.hejh.day0509;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.hejh.util.JDBCUtil;

public class JDBCDeleteDatabase {
    @Test
    public void createDatabase() {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        
        try {
            //使用JDBCUtil工具类,获取连接对象(包括注册驱动,工具类已经实现)
            conn = JDBCUtil.getConnection();
            st = conn.createStatement();
            //删除数据库;
            String sql = "drop database jdbc";
            int  i = st.executeUpdate(sql);
            System.out.println("删除数据库成功,影响了:"+i+"行");
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtil.closeResourse(conn, st, rs);
        }
    }
}

工具类JDBCUtil.java,略

4.jdbc创建表

4.1前提条件

  • 在运行下面的例子之前,你需要用你实际的用户名和密码去代替 username 和 password 。
  • 你的 MySQL 或者其他数据库已经启动了并在运行中。

 

4.2 JDBC建表步骤

  • 导包:导入含有需要进行数据库编程的 JDBC 类的包。大多数情况下,使用 import java.sql. 就足够了。

  • 注册 JDBC 驱动程序:初始化驱动程序,使之可以与数据库打开通信通道。
  • 打开连接:需要使用 DriverManager.getConnection() 方法创建一个 Connection 对象,它代表与数据库服务器的物理连接。
  • 建表:需要使用类型声明的对象建立并提交一个 建表SQL 语句到被选择的数据库中去创建表。
  • 释放资源:依靠 JVM 垃圾收集器可以明确地回收所有的数据库资源。

建表实例如下:建立一张student表

  java源码:

package com.hejh.day0509;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.hejh.util.JDBCUtil;

public class JDBCCreateDatabase {   
    @Test
    public void create() {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            //使用JDBCUtil工具类,获取连接对象(包括注册驱动,工具类已经实现)
            conn = JDBCUtil.getConnection();            
            //建表sql语句
            String sql = "create table student(id int(10) primary key,name varchar(20),grate int(10) not null)";            
            //获取Statement对象,并执行sql语句
            st = conn.createStatement();
            int i = st.executeUpdate(sql);          
            //处理执行sql返回的结果
            System.out.println("影响了:"+i+"行数据");    
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
        //关闭资源 JDBCUtil.closeResourse(conn, st, rs); } } }

抽取的java工具类JDBCUtil.java:

package com.hejh.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCUtil {
    final static String driver = "com.mysql.jdbc.Driver";
    final static String url = "jdbc:mysql://localhost/jdbc?useUnicode=true&characterEncoding=UTF-8";
    final static String user  = "root";
    final static String password = "root";
    
    Connection conn = null;
    PreparedStatement ps = null;
    Statement st = null;
    ResultSet rs = null;
        
    /**获取连接*/
    public static Connection getConnection() throws SQLException  {
        Connection    conn = null;
        try {
            //注册驱动
            Class.forName(driver);
            //获取连接
            conn = DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }                    
        return conn;    
    }
    
    /**关闭资源1:closeResourse(conn,st,rs)*/
    public static void closeResourse(Connection conn,Statement st,ResultSet rs) {
        try {
            if(rs!=null) {
                rs.close();
            }else {
                rs = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if(st!=null) {
                st.close();
            }else {
                st = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if(conn!=null) {
                conn.close();
            }else {
                conn = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
    /**关闭资源2:closeResourse(conn,ps,rs)*/
    public static void closeResourse(Connection conn,PreparedStatement ps,ResultSet rs) {
        try {
            if(rs!=null) {
                rs.close();
            }else {
                rs = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if(ps!=null) {
                ps.close();
            }else {
                ps = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if(conn!=null) {
                conn.close();
            }else {
                conn = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

数据库显示为:

 

 5.JDBC删除表

 java源码,工具类源码 略:

package com.hejh.day0510;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test
import com.hejh.util.JDBCUtil;

public class JDBCDeleteTable {  
    @Test
    public void deleteTable() {
        Connection conn = null;
        Statement st = null;
        try {
            conn = JDBCUtil.getConnection();
            st = conn.createStatement();
            String sql = "drop table student";
            int i = st.executeUpdate(sql);
            System.out.println("删除表成功,影响了"+i+"行");
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtil.closeResourse(conn, st);
        }        
    }
}

 数据库显示为:

6.JDBC插入数据

 java源码:

package com.hejh.day0510;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.junit.Test;
import com.hejh.util.JDBCUtil;

//jdbc插入数据
public class JDBCInsertData {
    @Test
    public void insertData() {
        Connection conn = null;
        PreparedStatement pst = null;
        
        try {
            conn = JDBCUtil.getConnection();
            String sql = "insert into student values(?,?,?)";
            pst = conn.prepareStatement(sql);
            pst.setInt(1, 01);
            pst.setString(2, "hjh");
            pst.setInt(3, 100);
            int i  = pst.executeUpdate();
            System.out.println("插入数据成功,影响了"+i+"行数据");            
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtil.closeResourse(conn, pst);
        }    
    }
}

JDBCUtil工具类源码:

package com.hejh.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCUtil {
    final static String driver = "com.mysql.jdbc.Driver";
    final static String url = "jdbc:mysql://localhost/jdbc?useUnicode=true&characterEncoding=UTF-8";
    final static String user  = "root";
    final static String password = "root";
    
    Connection conn = null;
    PreparedStatement ps = null;
    Statement st = null;
    ResultSet rs = null;
        
    /**获取连接*/
    public static Connection getConnection() throws SQLException  {
        Connection    conn = null;
        try {
            //注册驱动
            Class.forName(driver);
            //获取连接
            conn = DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }                    
        return conn;    
    }
    
    /**关闭资源closeResourse(conn,st)*/
    public static void closeResourse(Connection conn,Statement st) {
        try {
            if(st!=null) {
                st.close();
            }else {
                st = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if(conn!=null) {
                conn.close();
            }else {
                conn = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
    /**关闭资源closeResourse(conn,ps)*/
    public static void closeResourse(Connection conn,PreparedStatement ps) {
        try {
            if(ps!=null) {
                ps.close();
            }else {
                ps = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if(conn!=null) {
                conn.close();
            }else {
                conn = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    /**关闭资源closeResourse(rs)*/
    public static void closeResourse(ResultSet rs) {
        try {
            if(rs!=null) {
                rs.close();
            }else {
                rs = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

 

数据库显示为:

 

7.JDBC查询数据

数据库数据:

 java源码,工具类略:

package com.hejh.day0510;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.Test;
import com.hejh.util.JDBCUtil;

public class JDBCSelectData {    
    @Test
    public void selectDate() {
        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            conn  = JDBCUtil.getConnection();
            String sql = "select * from student";
            pst = conn.prepareStatement(sql);
            System.out.println("启动查询。。。");
            rs = pst.executeQuery();
            while(rs.next()) {
                int id = rs.getInt(1);
                String name  = rs.getString(2);
                String grate = rs.getString(3);
                System.out.println(id +"  "+name+"  "+ grate);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }   
    }   
}

eclipse console输出为:

启动查询。。。
1  hjh  100
2  swy  101

8.JDBC更新数据

数据库数据为:

更新id为1的student的name为hejh,java代码实现为:

package com.hejh.day0510;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.hejh.util.JDBCUtil;

public class JDBCUpdateData {
    @Test
    public void updateData() {
        Connection conn = null;
        Statement st = null;
        try {
            conn = JDBCUtil.getConnection();
            st = conn.createStatement();
            String sql = "update student set name='hejh' where id=1 ";
            int i = st.executeUpdate(sql);
            System.out.println("更新数据成功,影响了"+i+"行数据");
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtil.closeResourse(conn, st);
        }    
    }
}

数据库更新后数据为:

9.JDBC删除记录

数据库有以下2条数据:

删除ID为1的那条数据,java代码实现为:

package com.hejh.day0510;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.hejh.util.JDBCUtil;

public class JDBCDeleteData {
    @Test
    public void deleteData() {
        Connection conn = null;
        Statement st = null;
        try {
            conn = JDBCUtil.getConnection();
            st = conn.createStatement();
            String sql = "delete from student where id=1  ";
            int i = st.executeUpdate(sql);
            System.out.println("删除数据成功,影响了"+i+"行数据");
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtil.closeResourse(conn, st);
        }    
    }
}

数据库表更新数据库,剩余一条记录:

 10.JDBC查询like字句

 数据库数据如下:

 

JDBC  like字句查询,查询名字中带'h'的学生, ,java代码实现如下:

package com.hejh.day0510;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.Test;
import com.hejh.util.JDBCUtil;

//like字句
public class JDBCSelectDataLike {
    @Test
    public void like() {
        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            conn  = JDBCUtil.getConnection();
            String sql = "select * from student where name like '%h%' ";
            pst = conn.prepareStatement(sql);
            System.out.println("启动like字句查询。。。");
            rs = pst.executeQuery();
            while(rs.next()) {
                int id = rs.getInt(1);
                String name  = rs.getString(2);
                String grate = rs.getString(3);
                System.out.println(id +"  "+name+"  "+ grate);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtil.closeResourse(rs);
            JDBCUtil.closeResourse(conn, pst);
        }
    }
}

eclipse中console输出为:

启动like字句查询。。。
1  hejh  100
3  heihei  99

11.JDBC实现查询排序

数据库数据如下:

 按照grate由低到高排序,java代码实现如下:

package com.hejh.day0510;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.Test;
import com.hejh.util.JDBCUtil;

//jdbc实现排序
public class JDBCSortData {
    @Test
    public void sortData() {
        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            conn  = JDBCUtil.getConnection();
            String sql = "select * from student order by grate asc ";
            pst = conn.prepareStatement(sql);
            System.out.println("启动排序查询。。。");
            rs = pst.executeQuery();
            while(rs.next()) {
                int id = rs.getInt(1);
                String name  = rs.getString(2);
                String grate = rs.getString(3);
                System.out.println(id +"  "+name+"  "+ grate);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            JDBCUtil.closeResourse(rs);
            JDBCUtil.closeResourse(conn, pst);
        }
    }
}

eclipsepse中console输出为:

启动排序查询。。。
4  sansa  88
3  heihei  99
1  hejh  100
2  swy  101
原文地址:https://www.cnblogs.com/hejh/p/10838897.html