• jdbc(mysql)数据库连接


    0.将驱动引入项目

    • 在项目根目录新建文件夹lib,把数据库驱动mysql-connector-java-5.1.7-bin.jar放入该文件夹。
    • 右键点击项目名称->properties->Java Build Path->Libraries->Add JARs->找到驱动文件->搞定

      什么是mysql-connector-java-5.1.7-bin.jar

      数据库驱动。

      为什么要另外引入一个jar包sun公司怎么没有实现这些功能

      因为市面上有很多数据库mysql oracle sqlserver,每个数据库内部实现不同,sun公司提供标准接口,数据库提供商负责实现接口,把所有实现类打包成.jar文件。有了这个jar包,java程序就可以驱动着数据库做事。

    *1.加载驱动


    * 也叫注册驱动
    * Class.forName("com.mysql.jdbc.Driver")
    *
    *2.获取连接对象


    * Connection conn = DriverManager.getConnection("url",user,password);

      例如:jdbc:mysql://127.0.0.1:3306/myschool
    * url - jdbc:subprotocol:subname 形式的数据库 url  

    • URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。
    • 也可认为由4部分组成:协议、主机、端口、路径
    • URL的一般语法格式为:
    • (带方括号[]的为可选项):
    • protocol :// hostname[:port] / path / [;parameters][?query]#fragment


    *3.获取sql执行器对象


    * Statement 对象
    * Statement statement = conn.createStatement();

    *PreparedStatement(Statement的子接口)表示预编译的sql语句的对象,

    *SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。 

    *PreparedStatement pst = conn.prepareStatement(sql);

     (相对于statement执行器对象)

      1.代码可读性性高,由于是预编译sql语句对象,可以设置占位符

      2.解决了statement拼串造成的sql 注入安全问题

      3.由于是预编译之后发送的,减轻了服务器压力,提高了程序性能

                    

    *CallableStatement(PreparedStatement 的子接口)--用于执行sql存储过程的接口

    String sql = "call pro_…"

    * CallableStatement cas = conn.prepareCall(sql)

    *4.执行并返回处理结果


    * 增删改 sql语句 executeUpdate()-->返回值为sql语句操作的数据行数,行数为0则数据库指令操作不成功
    * 查询sql语句-->executeQuery()-->返回java.sql.ResultSet结果集对象,你所查询的表数据
    * 用next方法判断数据库结果集中是否有下一行元素,光标最初位于第一行之前
    *
    *5.关闭资源


    * 关闭资源的顺序,先创建的后关闭
    * 增删改sql语句 ----只需要关闭连执行器(Statement/PrepareStatement)和连接对象(Connection)
    * 查询 ,需要关闭ResultSet结果集对象,执行器对象(Statement/PrepareStatement)和连接对象(Connection)

    package com.jdbc;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    /**
     *1.加载驱动
     *    也叫注册驱动
     *    Class.forName("com.mysql.jdbc.Driver")
     *
     *2.获取连接对象
     *    Connection conn = DriverManager.getConnection("url",user,password);
     *    url - jdbc:subprotocol:subname 形式的数据库 url
     *
     *3.获取sql执行器对象
     *    Statement 对象
     *    Statement statement = conn.createStatement();
     *
     *4.执行并返回处理结果
     *    增删改 sql语句 executeUpdate()-->返回值为sql语句操作的数据行数,行数为0则数据库指令操作不成功
     *    查询sql语句-->executeQuery()-->返回java.sql.ResultSet结果集对象,你所查询的表数据
     *        用next方法判断数据库结果集中是否有下一行元素,光标最初位于第一行之前
     *
     *5.关闭资源
     *    关闭资源的顺序,先创建的后关闭
     *    增删改sql语句 ----只需要关闭连执行器(Statement/PrepareStatement)和连接对象(Connection)
     *    查询 ,需要关闭ResultSet结果集对象,执行器对象(Statement/PrepareStatement)和连接对象(Connection)
    
     * @author Administrator
     *
     */
    public class Test05 {
        public static void main(String[] args) {
            //1.加载驱动/注册驱动
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            //2.连接对象,在捕获异常外声明该对象,后续方法关闭该对象
            Connection connection = null;
            //3.执行器对象 ,在捕获异常外声明该对象,后续方法关闭该对象
            Statement statement = null;
            try {
                //获取连接对象
                connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/myschool","root","root");
                System.out.println("连接数据库成功");
                //获取执行器对象
                statement=connection.createStatement();
                //sql执行器对象用来向数据库发送sql语句,并执行sql语句,带有int返回值executeUpdate();
                String sql = "update grade set gradename='9年级' where gradeid=9";
                int count =statement.executeUpdate(sql);
                if(count>0){
                    System.out.println("修改成功 ");
                }else{
                    System.out.println("修改失败");
                }
                
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                System.out.println("数据库连接失败");
            }finally{
                //先创建的后关闭
                try {
                    statement.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    connection.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
            
        }
    }
  • 相关阅读:
    ORACLE 删除重复的数据
    Linux查看某个文件 单个字符的 个数
    通过虚拟机增加Linux的磁盘(分区容量)
    redheat7 sd 0:0:0:0: [sda] Assuming drive cache: write through(未解决)
    安装数据库Typical path for xclock: /usr/X11R6/bin/xclock 错误问题
    解决Visual Studio 2015启动慢的问题
    使用Discuz!自带参数防御CC攻击以及原理
    mysql 去除特殊字符和前后空白字符
    最新版的Chrome 69.0 设置始终开启flash而不是先询问
    DNS_PROBE_FINISHED_NXDOMAIN 问题解决
  • 原文地址:https://www.cnblogs.com/MRCH/p/11918779.html
Copyright © 2020-2023  润新知