zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    .NET-记一次架构优化实战与方案-梳理篇
    .net core实践系列之SSO-跨域实现
    Vue
    C# WPF
    开源框架
    开源框架
    开源框架
    开源框架
    WCF
    WCF
  • 原文地址:https://www.cnblogs.com/hejh/p/10838897.html
Copyright © 2011-2022 走看看