• 【MySQL】------数据库连接


    分享第十九条励志语录

    要想飞起来,首先要有飞翔的信念,如果没有这个信念,永远不可能飞起来。但只要有了飞翔的信念,再加上自己的努力,就有可能能够飞起来。成功也是这样,要想成功,首先得有成功的信念,然后要不断的为这个信念去努力,做到这两点,成功也就离我们不远了

    一:数据库连接

    1:如何操作数据库

    (1)使用DOS命令窗口,输入“mysql -hlocalhost -u数据库用户名 -p数据库密码”命令连接数据库,编写SQL语句(SQL语句以分号;或者\g结尾),回车运行,查看操作结果(受影响行数或结果集)

    (2)使用MySQL数据库自带的命令窗口,输入数据库密码连接数据库,编写SQL语句(SQL语句以分号;或者\g结尾),回车运行,查看操作结果(受影响行数或结果集)

    (3)使用数据库连接软件(SQLyog)连接数据库,通过图形化界面或者在查询编辑器中编写SQL语句,运行SQL语句查看操作结果(受影响行数或结果集)

    2:实际开发中如何操作数据库

    在实际开发中,当用户的数据发生变化时,不会也不可能通过客户端连接数据库去操作SQL语句,因为在实际开发中,数据的操作量很大,如果使用客户端操作数据库,无法保证SQL语句的正确性和执行效率。

    二、JDBC(Java Database Connectivity)

    1 :JDBC的概念

    (1)JDBC(Java DataBase Connectivity)Java连接数据库的规范(标准),可以使用Java语言连接数据库,从而对数据进行增删改查(CURD)操作。

    2: JDBC核心思想

    Java中定义了访问数据库的接口,可以为多种关系型数据库提供统一的访问方式。由数据库厂商提供驱动实现类(Driver数据库驱动)。

    2.2.1 MySQL数据库驱动

    mysql-connector-java-5.1.x 适用于5.x版本
    ​
    mysql-connector-java-8.1.x 适用于8.x版本

    2.2.2 JDBC API

    JDBC是由多个接口和类进行功能实现的。

    类型权限定名功能
    classjava.sql.DriverManager管理多个数据库驱动类,提供了获取数据库连接的方法
    interfacejava.sql.Connection代表一个数据库连接(当connection不为null时,表示已连接数据库)
    interfacejava.sql.Statement发送SQL语句到数据库工具
    interfacejava.sql.PreparedStatement发送SQL语句到数据库工具
    interfacejava.sql.ResultSet保存SQL查询语句的结果数据(结果集)
    classjava.sql.SQLException处理数据库应用程序时所发生的异常

    2.3 JDBC环境搭建

    (1)在项目下创建lib文件夹,用于存放jar文件。
    ​
    (2)将mysql驱动mysql-connector-java-5.1.x复制到项目的lib文件夹中。
    ​
    (3)将选中lib文件中的jar文件配置到项目中。

    三、JDBC的开发步骤(非常重要)

    3.1 注册驱动

    使用Class.forName("包含完整路径的驱动类");//手动加载字节码文件到JVM中。

    //1、注册驱动
    Class.forName("com.mysql.jdbc.Driver");

    3.2 获取连接对象

    通过DriverManager.getConnection(url,user,password)获取数据库连接对象

    url:mysql数据库的路径

    user:mysql数据库用户名

    password:mysql数据库密码

    //2、获取连接对象
    String url = "jdbc:mysql://127.0.0.1:3306/java221804";
    String dbuser = "root";
    String password = "******";
    Connection connection = DriverManager.getConnection(url, dbuser, password);

    3.3 获取发送SQL语句的对象

    通过Connection对象获取Statement对象,用于发送SQL语句,实现对数据库进行访问。

    //3、获取发送SQL语句的对象
    Statement statement = connection.createStatement();

    3.4 执行SQL语句

    编写SQL语句并执行SQL语句,接收SQL语句的执行结果。

    //编写SQL语句,SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法错误
    String sql = "DELETE FROM stu WHERE sid='S_1010';";
    //4、执行SQL语句,并接收结果
    //DML语句:对于插入数据、修改数据、删除数据操作,都调用executeUpdate()方法,返回受影响的行数(int类型)
    //DQL语句:对于查询数据,调用executeQuery()方法,返回一个结果集(ResultSet类型)
    int num =statement.executeUpdate(sql);

    3.5 处理结果

    处理第三步返回的数据。对返回的受影响行数结果进行逻辑判断;对返回的结果集进行迭代、依次获取数据。

    //5、处理结果
    if(num==1){
        System.out.println("数据删除成功");
    }else{
        System.out.println("数据删除失败");
    }

    3.6 释放资源

    释放(关闭)所使用到的所有资源对象,遵循”先开的后关,后开的先关“原则。

    //6、释放资源:先开后关,后开先关
    statement.close();
    connection.close();

    3.7 综合案例

    综合上述6个步骤,实现向数据库表中插入一条数据。

    package cn.bdqn.demo01;
    ​
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    ​
    public class InsertJDBC {
    ​
        public static void main(String[] args) {
    ​
            try {
                // 1、注册驱动
                Class.forName("com.mysql.jdbc.Driver");
                // 2、获取连接对象
                String url = "jdbc:mysql://127.0.0.1:3306/java221804";
                String user = "****";
                String password = "****";
                Connection connection = DriverManager.getConnection(url, user,password);
                // 3、获取发送SQL语句的对象
                Statement statement = connection.createStatement();
                // 编写SQL语句
                String sql = "INSERT INTO stu VALUES('S_1010','laoliu',29,'male');";
                // 4、执行SQL语句
                int num = statement.executeUpdate(sql);
                System.out.println(num);
                // 5、处理结果
                if (num == 1) {
                    System.out.println("数据插入成功");
                } else {
                    System.out.println("数据插入失败");
                }
                // 6、释放资源:先开后关,后开先关
                statement.close();
                connection.close();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    今天的分享就到此结束了

    创作不易点赞评论互关三连

     

  • 相关阅读:
    基于贝叶斯推理估计稳态 (ST) 和非稳态 (NS) LPIII 模型分布拟合到峰值放电(Matlab代码实现)
    尚硅谷Flink(二)DStream API
    el-checkbox-group修改默认样式,el-checkbox-group自定义样式案例
    文献管理软件Zotero的安装和使用
    【C语言】字符串+内存函数的介绍
    Network Address Translation,网络地址转换技术
    TCPIP网络编程第一章踩坑过程 bind() error connect() error
    Spring 4.x版本新特性
    基于springboot+vue+elementui的游戏攻略分享平台
    计算机组成原理之定点除法
  • 原文地址:https://blog.csdn.net/swy2560666141/article/details/127919750