zoukankan      html  css  js  c++  java
  • Java数据库的连接JDBC

    1、JDBC

    开发步骤
    (1)注册驱动.
    告知JVM使用的是哪一个数据库的驱动
    (2)获得连接.
    使用JDBC中的类,完成对MySQL数据库的连接
    (3)获得语句执行平台
    通过连接对象获取对SQL语句的执行者对象
    (4)执行sql语句
    使用执行者对象,向数据库执行SQL语句
    获取到数据库的执行后的结果
    (5)处理结果
    (6)释放资源.(先开的后关)
    调用一堆close()方法

    package com.oracle.demo01;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    
    public class demo01 {
    
        public static void main(String[] args) throws ClassNotFoundException, SQLException {
            //1.注册驱动.
            //告知JVM使用的是哪一个数据库的驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.获得连接.
            //使用JDBC中的类,完成对MySQL数据库的连接
            Connection  conn = DriverManager.getConnection
                    ("jdbc:mysql://localhost:3306/ceshi?characterEncoding=utf-8","root","123");
            //3.获得语句执行平台
            //通过连接对象获取对SQL语句的执行者对象
            Statement sta = conn.createStatement();
            //4.执行sql语句
            //使用执行者对象,向数据库执行SQL语句
            //获取到数据库的执行后的结果
            String sql = "insert into sort(sname) values ('护手霜')";
            int row = sta.executeUpdate(sql);
            System.out.println(row);
            //5.处理结果
            //6.释放资源(先开的后关)
            //调用一堆close()方法
            sta.close();
            conn.close();
        }
    
    }

    再举一个例子:

    package com.oracle.difficult;
    //插入数据
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class demo01 {
    
        public static void main(String[] args) throws ClassNotFoundException, SQLException {
            //1、注册驱动、告知JVM使用的是哪一个数据库的驱动
            //异常ClassNotFoundException
            Class.forName("com.mysql.jdbc.Driver");
            //2、获得连接
            //导包
            String  url = "jdbc:mysql://localhost:3306/ceshi?characterEncoding=gbk";//这里ceshi是数据库
            String root = "root";
            String password = "123";
            //异常SQLException
            //DriverManager:管理一组 JDBC 驱动程序的基本服务
            //Connection:与特定数据库的连接
            Connection  con = DriverManager.getConnection(url,root,password);
            //3.获得语句执行平台
            //创建一个 Statement 对象来将 SQL 语句发送到数据库
            Statement sta = con.createStatement();
            //4、执行sql语句
            //使用执行者对象 /Statement 对象/ ,向数据库执行SQL语句
            //写SQL语句;
            String sql = "insert into ceshi1(id,sname) values (10,'剑魂')";
            //int executeUpdate(String sql)
            //执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,
            //或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)如:CREATE TABLE和DROP TABLE等。
            int row = sta.executeUpdate(sql);
            System.out.println(row);
            //5、处理结果
            //执行insert、update、delete无需处理
            //6、释放资源(先开的后关,后开的先关)
            //调用一堆close()方法
            sta.close();
            con.close();
        }
    
    }
     

    需要处理结果集:

    package com.oracle.difficult;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class demo03 {
    
        public static void main(String[] args) throws ClassNotFoundException, SQLException {
            //1、注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2、获得连接
            String url = "jdbc:mysql://localhost:3306/ceshi?characterEncoding=gbk";
            String root = "root";
            String  password = "123";
            Connection  con =  DriverManager.getConnection(url, root, password);
            //3、获得语句执行平台
            Statement  sta  =  con.createStatement();
            //4、执行sql语句
            String sql = "select * from ceshi1 where sname = '狂战士'";
            //需要导包   import java.sql.ResultSet;
            ResultSet rs = sta.executeQuery(sql);
            //5、处理结果
            while(rs.next()){
                System.out.println(rs.getString("id")+".."+rs.getString("sname"));
            }
            //6、释放资源
            rs.close();
            sta.close();
            con.close();
        }
    
    }

    2、数据库的连接
    (1)select 查询操作:
    执行语句:ResultSet executeQuery(sql);
    处理结果集:rs.next();rs.getXxx();
    释放资源:ResultSet.close();
    (2)预处理对象 PreparedStatement:解决SQL注入问题
    sql语句:? 占位符;
    获得执行对象:prepareStatement(sql);
    执行语句:setXxx(int, Obj);executeQuery();
    释放资源:PreparedStatement.close();

    举个例子:

    package com.oracle.difficult;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Scanner;
    
    public class demo04 {
    
        public static void main(String[] args) throws ClassNotFoundException, SQLException {
            //1、注册驱动
                    Class.forName("com.mysql.jdbc.Driver");
                    //2、获得连接
                    String url = "jdbc:mysql://localhost:3306/ceshi?characterEncoding=gbk";
                    String root = "root";
                    String  password = "123";
                    Connection  con =  DriverManager.getConnection(url, root, password);
                    
                    //3、获得语句执行平台
                    Statement  sta  =  con.createStatement();
                    //4、执行sql语句
                    Scanner  sc = new Scanner(System.in);
                    System.out.println("请输入用户名:");
                    String  user = sc.next();
                    System.out.println("请输入密码:");
                    String   pass = sc.next();
                    String sql = "select count(*) from user where uname = '"+user+"' "+"and pwd = '"+pass+"'";
                    //需要导包   import java.sql.ResultSet;
                    ResultSet rs = sta.executeQuery(sql);
                    /*//3、获得语句执行平台(预处理对象,解决SQL注入问题)
                    String  sql = "select count(*) from ceshi1 where id = ? and sname = ?";
                    PreparedStatement past = con.prepareStatement(sql);
                    //4、执行SQL语句
                    Scanner  sc = new Scanner(System.in);
                    System.out.println("请输入用户名:");
                    int  user = sc.nextInt();
                    System.out.println("请输入密码:");
                    String   pass = sc.next();
                    past.setInt(1, user);
                    past.setString(2, pass);
                    ResultSet  rs = past.executeQuery();*/
                    //5、处理结果集
                    int count = 0;
                    while(rs.next()){
                        count = rs.getInt(1);
                    }
                    if(count > 0){
                        System.out.println("登录成功!!");
                    }else{
                        System.out.println("登录失败");
                    }
                    //6、释放资源
                    rs.close();
                    sta.close();
                    con.close();
    
        }
    
    }

    SQL语句注入问题:

    (3)JDBCUtils工具类:
    将注册驱动、获得连接和释放资源(方法重载)封装起来;

    package com.oracle.tools;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class JDBCUtils {
    
        public static  Connection get() {
                    //1、注册驱动
                    try {
                        Class.forName("com.mysql.jdbc.Driver");
                    } catch (ClassNotFoundException e) {
                        e.printStackTrace();
                    }
                    //2、获得连接
                    String url = "jdbc:mysql://localhost:3306/ceshi?characterEncoding=gbk";
                    String root = "root";
                    String pwd = "123";
                    Connection conn = null;
                    try {
                         conn = DriverManager.getConnection(url,root,pwd);
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                    return conn;
           }
            public static void  close(Connection conn,PreparedStatement pst){
                if(pst != null){
                    try {
                        pst.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(conn != null){
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
            public static void  close(Connection conn,PreparedStatement pst,ResultSet rs){
                if(rs != null){
                    try {
                        rs.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(pst != null){
                    try {
                        pst.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(conn != null){
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
    }
  • 相关阅读:
    python isinstance函数 判断元素是否是字符串、int型、float型
    Day04 list(列表)
    Day 05 Dict字典
    Python的简介
    DAY7 字符编码和文件操作
    DAY6 元组、字典与集合
    DAY5 基本数据类型及内置方法
    DAY4 if、while和for
    DAY3 数据类型与运算符
    DAY2 初识python
  • 原文地址:https://www.cnblogs.com/cgj1994/p/9866884.html
Copyright © 2011-2022 走看看