数据库操作

  • 数据库操作
  • 数据库基础数据库是一种 存储结构允许使用各种格式 输入、处理、检索 数据,且不用在每次需要数据时 重新输入数据。
  • select 语句: select语句 用于查询数据表中的数据select 语句 语法:
select 所选字段列表 from 数据表名
where 条件表达式 group by 字段名 having 条件表达式
order by 字段名
  1. insert 语句: insert语句 用于向数据表中插入新数据insert 语句 语法:
insert into 表名[(字段1) , (字段2)]
valuse(属性值1 , 属性值2)
  1. update 语句: update语句 用于修改数据表中的数据update 语句 语法:
update 数据表名 set 字段名 = 新的字段值 where 条件表达式
  1. delete 语句: delete语句 用于删除数据表中的数据。 delete 语句 语法:
delete from 数据表名 where 条件表达式
  • 连接数据库 访问数据库的步骤:首先 加载驱动程序(仅需要在第一次访问数据库时加载一次),然后每次访问数据时创建一个Connection对象,然后接着 执行SQL语句,最后完成数据库操作后, 依次销毁前面所创建的Connection对象、释放数据的链接连接数据库 实例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Demo {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");// 加载数据库驱动
            String url = "jdbc:mysql://127.0.0.1:3306/java_learn";// 数据库地址
            String userName = "root";// 数据库用户名
            String passord = "asd123";// 数据库密码
            Connection con = DriverManager.getConnection(url,userName,passord);// 连接数据库
            System.out.println(con);
            con.close();// 关闭数据库
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}
  • 数据查询数据的 查询主要通过 Statement接口(执行SQL语句)ResultSet接口(存储查询结果) 实现。Statement接口中的方法:方法 介绍 next(); 指针向下一行。 first(); 指针回到第一行。 last(); 指针回到最后一行。ResultSet接口中的方法:返回类型: getInt(); getDouble(); getString(); getObject();重载方法: getString(String 列名); getString(int 第几列);数据查询 实例:
import java.sql.*;

public class Demo1 {
    public static void main(String[] args) {
        Connection connection = null;// 声明Connection对象(连接接口)
        Statement statement = null;// 声明Statement对象(发送SQL接口)
        ResultSet resultSet = null;// 声明ResultSet对象(结果集接口)

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");// 加载驱动程序
            connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java_learn", "root", "asd123");// 与数据库连接

            statement = connection.createStatement();// 创建Statement对象
            resultSet = statement.executeQuery("select * from java_learn.java_1433");// 执行SQL语句

            while (resultSet.next()) {// 判断resultSet有没有下一行

                int id = resultSet.getInt("id");// 获取列名为id的值
                String name = resultSet.getString(2);// 获取第2列的值
                String sex = resultSet.getString("sex");// 获取列名为sex的值
                String birthday = resultSet.getString(4);// 获取第4列的值

                System.out.println("编号=" + id + " 姓名=" + name + " 性别=" + sex + " 生日=" + birthday);

            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {// 依次关闭数据库连接资源
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
  • 动态查询在程序中 不断向数据库发送 SQL语句 ,会 增加数据库中 SQL解释器负担,从而 降低 SQL语句 的执行速度。为了解决这个问题,可以使用 Connection对象 的 p repareStatement(String sql)方法 对 SQL语句 进行 预处理 , 将这个命令 封装PreparedStatement对象 中,再通关 调用 PreparedStatement对象 的对应方法执行 底层的命令,就可以减轻SQL解释器的负担。在SQL进行预处理时,可以使用 通配符 ” ? ” 来代替任何值:
PreparedStatement preparedStatement = connection.prepareStatement("select * from java_learn.java_1434 where name = ?");
preparedStatement.setString(1,"name");

动态查询 实例:

import java.sql.*;

public class Demo2 {
    public static void main(String[] args) {
        Connection connection = null;// 声明Connection对象(连接接口)

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");// 加载驱动程序
            connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java_learn", "root", "asd123");// 与数据库连接

            String sql = "select * from java_learn.java_1434 where name like ? and id = ?";// SQL语句
            PreparedStatement preparedStatement = connection.prepareStatement(sql);// 执行SQL语句
            preparedStatement.setString(1,"小%");
            preparedStatement.setInt(2,1);// 将数据库中id为1的值返回给第二个通配符

            ResultSet resultSet = preparedStatement.executeQuery();

            System.out.println("id\tname");
            while (resultSet.next()){
                System.out.println(resultSet.getInt(2)+"\t"+resultSet.getString(1));
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {// 依次关闭数据库连接资源
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
  • 添加、修改、删除记录Java中可以通过 PreparedStatement对象 动态地对数据表中 原有数据进行修改操作,并通过 executeUpdate()方法 进行 更新语句的操作。添加、修改、删除记录 实例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Demo3 {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java_learn","root","asd123");
            statement = connection.createStatement();

            // region 插入数据
            String sql1 = "insert into java_learn.java_1435(id,name) values('12','大明')";// 插入id,name (id:12、name:大明)
            int result1 = statement.executeUpdate(sql1);// 执行修改权限的SQL
            System.out.println("有多少行记录被修改:"+result1);
            // endregion

            // region 修改数据
            String sql2 = "update java_learn.java_1435 set name = '中明' where id = 12";// 修改 id为12 的 name为中明
            int result2 = statement.executeUpdate(sql2);
            System.out.println("有多少行记录被修改:"+result2);
            // endregion

            // region 删除数据
            String sql3 = "delete from java_learn.java_1435 where id = 12";// 删除id为12的值(整一行)
            int result3 = statement.executeUpdate(sql3);
            System.out.println("有多少行记录被修改:"+result3);
            // endregion

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            if(statement!=null){
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

    }

}

Original: https://www.cnblogs.com/TeaTracing/p/16178897.html
Author: TeaTracing
Title: 数据库操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622527/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Mysql索引总结

    一、索引分类 Hash索引:Hash 索引查询效率很高,时间复杂度O(1)。Mysql Innodb引擎不支持hash索引的。Hash索引适合精确查找,不适合范围查找。 平衡二叉树…

    数据库 2023年5月24日
    061
  • Gorm 的黑魔法

    开发过程中,看到同事的代码写了这么一段: db = db.Session(&gorm.Session{Context: db.Statement.Context}).Fir…

    数据库 2023年6月9日
    093
  • Linux–>网络配置

    虚拟机NAT网络关系图 在Linux中查看网络配置 ifconfig ping 测试主机之间网络连通性 测试当前服务器是否可以连接目的主机 ping 目&am…

    数据库 2023年6月14日
    081
  • 【黄啊码】linux利用lvs+Keepalived实现负载均衡

    负载均衡:两台(一主一备) LVS + Keepalived+三台HTTP服务器 这是我的第一台HTTP服务器【这里使用的是现成lnmp,然后复制出三台一模一样的】 在每台(HTT…

    数据库 2023年6月16日
    097
  • postman操作数据库

    一、安装node.js 二、配置环境变量 三、安装xmysql,连接数据库 四、postman操作数据库 功能说明 node.js:是一个javascript运行环境,优点:单线程…

    数据库 2023年6月14日
    0104
  • CentOS服务器的网络配置与部署

    1.系统安装与软件安装 1.1选择CentOs7.9release版本用作所研发系统部署服务器,官网以及所选择镜像为地址为:http://ftp.sjtu.edu.cn/cento…

    数据库 2023年6月6日
    084
  • LRU算法

    class LRUCahce { private Node head; private Node tail; private Map hashMap; private int ca…

    数据库 2023年6月14日
    074
  • Python 垃圾回收总结

    前言 最近在阅读《垃圾回收的算法与实现》,里面将讲到了一些常用的垃圾回收(Garbage Collect)算法,如:标记-清除、引用计数、分代回收等等。后面讲到了 Python 的…

    数据库 2023年6月6日
    0102
  • 15. 三数之和

    给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案…

    数据库 2023年6月16日
    063
  • 一致性hash算法

    背景 当我们的业务系统大到一定程度的时候,一台缓存服务器显然不能满足需求,需要使用多台缓存服务器。然后缓存服务器具体一定的用户粘性属性,如何设计缓存服务器使其命中率提高,并具有伸缩…

    数据库 2023年6月9日
    081
  • HTML5基础知识

    作者导言: 引用偶像刘德华的一句话 “学到的就要教人,赚到的就要给人”! 以下是关联的web前端基础知识文章,通过这些文章,您既可以系统地学习和了解这些知识…

    数据库 2023年6月14日
    053
  • Linux的一些的常用命令

    小杰笔记: 记录一下Linux的一些常见命令: 1:Linux关机与重启的命令: 2:切换目录与查看目录的文件: 3:文件目录的创建与删除: 4:文件的复制 删除与移动: 5:如何…

    数据库 2023年6月6日
    066
  • [Mysql]root密码忘了怎样重新设置密码

    环境 Ubuntu 20.04 LTSMysql 8.0+ 停止mysql服务 service mysql stop 修改 my.cnf 文件 vim /etc/mysql/my….

    数据库 2023年6月16日
    069
  • mybatis缓存

    加上flushCache=”true”后,再次运行结果如下 2.二级缓存 mybatis的二级缓存默认开启,但真正使用需要在mapper文件中添加相应的缓存…

    数据库 2023年6月16日
    081
  • JavaWeb 05_JDBC入门及连接MySQL

    一、概念 *概念: Java DataBase Connectivity Java数据库连接, Java语言操作数据库* JDBC本质:其实是官方(sun公司)定义的一套操作所有关…

    数据库 2023年5月24日
    096
  • 牛客SQL刷题第三趴——SQL必知必会

    【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回在描述中以先后顺序同时出现 toy 和 carrots …

    数据库 2023年5月24日
    072
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球