记录使用数据库时出现的问题(及使用数据库的基本方法)

在数据库中,数据是可以以表格的形式存储的,每个表格中都包含若干条记录,每条记录包含若干个字段,这相比IO流 可以更方便地进行数据的查询、插入、删除和更新操作。数据库系统可以支持大规模数据存储和访问。如果存储的数据量或者访问量很大,就需要使用数据库系统来解决相应的性能问题。另外数据库系统具有更好的跨平台性。不同的操作系统和编程语言都可以使用同一个数据库系统。

一、基本操作之CRUD

 先创建一个表格

增加

try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
   
        try (
            Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8","root", "admin");
            Statement s = c.createStatement();             
        )
        {
            String sql = "insert into good values("abt",10.0)";
            s.execute(sql);
               
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

删除

//核心代码
String sql = "delete from goods where Sname = apple";

修改

//核心代码
String sql = "update goods set Sprice = 12.0 where Sname = "apple"";

查询

String sql = "select * from goods";
 
            // 执行查询语句,并把结果集返回给ResultSet
            ResultSet rs = s.executeQuery(sql);
            while (rs.next()) {
                int a = rs.getInt("age");// 可以使用字段名
                String name = rs.getString(2);// 也可以使用字段的顺序
                float hp = rs.getFloat("hp");
                int damage = rs.getInt(4);
            }
            // 不一定要在这里关闭ReultSet,因为Statement关闭的时候,会自动关闭ResultSet

二、发现的问题 

 这里Class.forName("com.mysql.cj.jdbc.Driver");不能放入try-with-resorce里,这是因为Class.forName() 方法返回的是一个Class,不是实现 java.lang.AutoCloseable 或 java.io.Closeable 接口的资源,而 Connection, Statement 和 ResultSet 实现了 java.sql.Connection接口,所以它们都是可关闭的资源,并且可以在 try-with-resources 块内使用并自动关闭。

在Connection c = DriverManager .getConnection语句中,我们查看源码发现Connection是一个接口,getConnection返回的是一个接口对象,这个对象其实是由 JDBC 驱动程序提供的,如下图。

 

 

DriverManager 类属于 JDBC API 中的 java.sql 包中,用来管理 JDBC 驱动程序。DriverManager 可以加载多个不同的 JDBC 驱动程序,并且根据提供的 URL 返回适当的 java.sql.Connection 对象。因此,我们可以通过 DriverManager 来获取与特定数据库的连接。

java.sql.Connection 接口属于 JDBC API 中的 java.sql 包中,用来表示与数据库的连接。Connection 接口定义了与数据库交互的一系列方法,例如执行 SQL 语句、提交事务、设置提交模式等等。DriverManager.getConnection() 方法返回的是 java.sql.Connection 接口的一个实现类的对象,这个对象实际上是某个 JDBC 驱动程序提供的。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值