首页 > 其他分享 >JDBC 第四组 曹雨

JDBC 第四组 曹雨

时间:2022-08-19 21:49:20浏览次数:46  
标签:曹雨 事务 JDBC String 数据库 sql stmt mysql 第四组

JDBC

使用Java来操作数据库,用Java来对数据库中表中的数据执行:增,删,改,查等操作。

实现数据库驱动的接口:

java.sql.Driver

  • mysql:com.mysql.jdbc.Driver
  • oracle:oracle.jdbc.driver.OracleDriver

URL地址:

jdbc协议:
格式:jdbc:mysql://主机名称 : 端口号/数据库名
例子:jdbc:mysql://127.0.0.1:3306/jsoft?useUnicode=true&characterEncoding=utf8

JDBC的编写步骤:

1.导入外部依赖(引入jar包),新建一个lib文件夹,把jar包拖进去,然后右键 Add as library

image

image

写代码连接数据库:

	 public void test02() throws ClassNotFoundException, SQLException, IOException {

/*
  使用属性文件的好处:
   1、实现了代码和数据的分离,如果需要修改配置信息,直接在属性文件中修改即可,不需要深入代码
   2、如果修改了配置信息,省去了编译的过程
 */
Properties properties = new Properties();

// 读取外部的properties属性文件
// 记住就好,复制粘贴就好
properties.load(Ch01.class.getClassLoader().getResourceAsStream("jdbc.properties"));

String url = properties.getProperty("mysql.url");
String driverName = properties.getProperty("mysql.driverName");
String username = properties.getProperty("mysql.username");
String password = properties.getProperty("mysql.password");

     1.加载驱动类
Class.forName(driverName);
     4.获取连接
Connection connection = DriverManager.getConnection(url, username, password);
System.out.println(connection);
System.out.println(Objects.nonNull(connection) ? "数据库连接成功" : "数据库连接失败");
}

新建一个文件,将下列代码输入进去

	mysql.url=jdbc:mysql://127.0.0.1:3306/(表名)?useUnicode=true&characterEncoding=utf8
	mysql.username=root
	mysql.password=root
	mysql.driverName=com.mysql.jdbc.Driver

连接数据库完毕,我们可以对数据库进行使用

JDBC操作数据库

表中数据的修改

	 public void test01(){
    // 1.获取连接
    Connection conn = null;
    Statement stmt = null;
    try {
        conn = JDBCUtil.getConnection();
        stmt = conn.createStatement();
        // 2.执行sql语句
        String sql = "(修改表)";
        // 返回值是执行sql语句影响的行数
        int i = stmt.executeUpdate(sql);
        // 3.处理执行sql的返回值
        System.out.println(i);
        System.out.println("操作成功...");
    } catch (SQLException e) {
        throw new RuntimeException(e);
    } finally {
       JDBCUtil.close(conn,stmt);
    }
}

表中数据的查询

	 public void test01() {
    // 1.获取连接
    Connection conn = JDBCUtil.getConnection();
    Statement stmt = null;
    ResultSet rs = null;
    try {
        // 2.获取可以执行sql语句的stmt对象
        stmt = conn.createStatement();
        // 3.定义sql
        String sql = "select id tid,name tname from teacher where id = 7";
        // 4.执行查询的sql,会得到一个ResultSet
        // ResultSet就是封装了查询结果的一个对象
        rs = stmt.executeQuery(sql);
        // 5.遍历结果集ResultSet
        while(rs.next()) {
            int id = rs.getInt("tid");
            String name = rs.getString("tname");
            System.out.println("id:" + id + ",name:" + name);
        }
    } catch (SQLException e) {
        throw new RuntimeException(e);
    } finally {
        // 6.关闭资源
        JDBCUtil.close(conn,stmt,rs);
    }

}

数据库事务:

Mysql的数据库引擎

1.在MySQL中,只有使用了Innodb引擎的数据库才支持事务
2.事务处理可以用来维护数据的完整性。保证sql语句要么全部执行,
要么全部不执行。
3. 发生在DML中,增删改。

事务的四大特征ACID

  • 原子性 A。
    一个事务,要么全部完成,要么全部不完成。

  • 一致性 C。
    在事务开始之前和事务结束之后,数据库的完整性没有被破坏。

  • 隔离性 Isolation
    数据库允许多个事务同时对数据进行处理。每个事务之间是相互隔离。

  • 持久性 D
    事务结束以后,对数据的增删改是永久性的。

术语:提交事务,回滚事务(事务回滚)

1、事务一旦提交,就不可能回滚。

2、当一个连接对象被创建时,默认情况下自动提交事务。

3、关闭连接时,数据会自动提交事务。

操作事务的步骤:
1、关闭事务的自动提交
当做出增删改操作,把变化发生在内存中,提交事务,才会真正提交给数据库。

sql输入

通过字符串的拼接,可以得到一个恒等的sql语句,可以跳过某些判断。

	public static void main(String[] args) {
    login("zxcvzxcvzxcv","b' or '1' = '1");
}

PreparedStatement:预编译(预加载)接口

1、通过conn获取的对象
2、是Statement接口的子接口
3、sql语句中可以传参。用?占位,通过setXXX方法来给?赋值
4、提高性能
5、避免sql注入

	  String sql = "select * from user where username = ? and password = ?";

        pstmt = conn.prepareStatement(sql);
        pstmt.setString(1,"aaa");
        pstmt.setString(2,"b' or '1' = '1");

        rs = pstmt.executeQuery();
        if(rs.next()) {
            System.out.println("登录成功...");
        }else {
            System.out.println("账号或密码错误...");
        }

标签:曹雨,事务,JDBC,String,数据库,sql,stmt,mysql,第四组
From: https://www.cnblogs.com/figh466/p/16603380.html

相关文章

  • 2022-8-19 第六组 JDBC(2)
    PreparedStatement:执行sql的对象1.SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题1.输入用户随便,输入密码:a'or'a'='a2.sql:sel......
  • 2022-8-18 第六组 JDBC
    JDBC1.概念:JavaDataBaseConnectivityJava数据库连接,Java语言操作数据库JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商......
  • 2022-08-19 田龙跃 JDBC知识
    JAVA链接数据库步骤1.加载驱动2.建立链接3.获取statement语句对象执行sql4.处理结果集5.关闭连接加载驱动Class.forName(驱动名称)建立连接connection=DriverMa......
  • 2022-8-19第一组孙乃宇JDBC学习2
    JDBC的学习Statement的不足:大量的字符串拼接,代码可读性降低。sql注入SQL注入:BUG通过字符串的拼接,可以得到一个恒等的sql语句,可以跳过某些判断。如login("zxcvzx......
  • 2022-08-19 第四组 王佳齐 学习笔记
    思维导图学习笔记PreparedStatement:预编译(预加载)接口2.事务处理可以用来维护数据的完整性。保证sql语句要么全执行,要么全部不执行。1.通过conn获取的对象2.是Stateme......
  • 【Spring5学习笔记(3)】JdbcTemplate操作数据库:
    JdbcTemplate(概念和准备)1、什么是JdbcTempate(1)Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作2、准备工作(1)引入相关依赖(2)在spring配置文件配......
  • JDBC的基本概念
    原文链接JDBC一般指Java数据库连接(JavaDatabaseConnectivity)api应用程序接口(API):可以调用或者使用类/接口/方法等去完成某个目标。API制定的类/方法可以做什么。A......
  • 【JAVA】Jdbctemplate中query、queryForObject、queryForList、queryForMap方法使用
    使用NamedParameterJdbcTemplate进行数据库操作时,常用query、queryForObject、queryForList、queryForMap方法说明记录 【query方法】返回结果是list,且list中元素必须是......
  • Could not resolve placeholder 'jdbc.password' in string value "${jdbc.password}"
    spring连接数据库时报错org.springframework.beans.factory.BeanDefinitionStoreException:Invalidbeandefinitionwithname'dataSource'definedinclasspathres......
  • Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationExceptio
    多表查询时mysql语句报错Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Column'XX'inwhereclauseisambiguous原因多表查......