ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据库操作

2022-04-22 15:01:04  阅读:162  来源: 互联网

标签:语句 java String 数据库 resultSet 操作 id


《零基础学Java》


  • 数据库操作

  • 数据库基础

    数据库是一种存储结构允许使用各种格式 输入、处理、检索 数据,且不用在每次需要数据时重新输入数据。

    1. select 语句:

      select语句用于查询数据表中的数据

      select 语句 语法:

      select 所选字段列表 from 数据表名
      where 条件表达式 group by 字段名 having 条件表达式
      order by 字段名
      
    2. insert 语句:

      insert语句用于向数据表中插入新数据

      insert 语句 语法:

      insert into 表名[(字段1) , (字段2)]
      valuse(属性值1 , 属性值2)
      
    3. update 语句:

      update语句用于修改数据表中的数据

      update 语句 语法:

      update 数据表名 set 字段名 = 新的字段值 where 条件表达式
      
    4. 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对象 的 prepareStatement(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();
                    }
                }
            }
    
        }
        
    }
    

标签:语句,java,String,数据库,resultSet,操作,id
来源: https://www.cnblogs.com/Auci/p/16178897.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有