zoukankan      html  css  js  c++  java
  • Java之JDBC操作数据库

    DBC

    JDBC就是一套接口,真正执行的是jar包里得实现类,通过泛型对象来执行实现类里的方法。

    步骤:

    ###1.导入驱动jar包到工程中
    ###2.编写代码注册驱动,我们要让程序知道用的是哪个驱动包
    ###3.获取数据库连接对象 :Connection,这个对象就是本地java代码和数据库直接的对象
    ###4.定义sql,将来通过一些方式把sql发送到数据库,从而达到操作sql的要求
    ###5.获取执行sql语句的对象:Statement
    ###6.执行sql,方法调用返回一个返回值,接受返回的结果
    ###7.处理结果
    ###8.释放资源
    

    代码:

    package cn.itcast.jdbc;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
    /*
    * JDBC
    * */
    public class JdbcDemo1 {
        public static void main(String[] args) throws Exception {
            //1,导入驱动jar包
            //  1)复制mysql-connector-java-8.0.18到项目的libs目录下(mysql-connector-java-8.0.18要与mysql版本匹配,这里我用的mysql也是8.0.18版本)
            //  2)右键libs选择添加为库(add as library),这一步才是真正的把jar包加入
            Class.forName("com.mysql.cj.jdbc.Driver");//这是mysql8.0的更改内容,之前的mysql版本使用的是"com.mysql.jdbc.Drivar"。
            //  3)获取数据库连接对象Connection类的conn
            Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db3", "root", "123456");
            //  4)定义sql语句
            String sql = "update emp set salary = 8500 where id = 1001";
            //  5)获取执行sql的对象Statement类的stmt
            Statement stmt = conn.createStatement();
            //  6)执行sql,executeUpdate是修改语句
            int count = stmt.executeUpdate(sql);
            //  7)处理结果,打印接受返回的count值
            System.out.println(count);
            //  8)释放资源
            stmt.close();
            conn.close();
        }
    }
    
    

    效果:

    运行前:

    运行后:

    详解JDBC各个对象

    1.DriverManager:驱动管理对象

        *功能:
    

    1.注册驱动——


    写代码使用:Class.forName("com.mysql.cj.jdbc.Driver");
    那么这两个有啥关系呢?
    我们把com.mysql.cj.jdbc.Driver类文件加载进内存,但是我们没有调用这个类,意味着这个类里的代码会随着类的加载而自动执行,也就是存在静态代码块来存放这些自动执行的代码。
    通过查看源码发现:在com.mysql.cj.jdbc.Driver类中存在静态代码块:

    代码显示它在注册驱动,而且真正注册驱动的是DriverManager,我们通过com.mysql.cj.jdbc.Driver类执行了DriverManager,这样比较简单。
    从sql5开始,Class.forName("com.mysql.cj.jdbc.Driver");//sql8.0的新写法 这句话其实不需要写,因为

    在这里相当于已经写了com.mysql.cj.jdbc.Driver这句话。

    2.获取数据库连接——


    这是一个静态的方法,可以通过类名直接调用。
    参数:
    url——指定连接的路径,IP端口与数据库的名称jdbc:mysql://ip地址(域名):端口号/数据库名称
    如果连接的本机的mysql服务器,默认端口是3306,那么url可以简写为jdbc:mysql://数据库名称
    user——用户名
    password——密码

    2.Connection:数据库连接对象

        Statement stmt = conn.createStatement();这个Statement 类的stmt 可以用来执行方法,int count = stmt.executeUpdate(sql);
            ###1.功能:
                    ###1.获取执行sql的对象
            
                    ![](https://img2018.cnblogs.com/blog/1772487/201910/1772487-20191023161131213-281658183.png)
                    ![](https://img2018.cnblogs.com/blog/1772487/201910/1772487-20191023161214542-464087519.png)
                    ###2.管理事务
            
                    开启事务:
                    ![](https://img2018.cnblogs.com/blog/1772487/201910/1772487-20191023161400794-181892992.png)
                    调用该方法设置参数为false,即开启事务
                    提交事务:
                    ![](https://img2018.cnblogs.com/blog/1772487/201910/1772487-20191023161547203-906933181.png)
                    回滚事务:
                    ![](https://img2018.cnblogs.com/blog/1772487/201910/1772487-20191023161617501-1136743706.png)
    

    3.执行sql的对象

    1.执行sql

    1.

    可以执行任意的sql,了解下,用的不多。

    2.

    执行的是DML语句(DML是增删改表中数据的语句),DDL语句(create,alter,drop)语句。int类型的返回值是影响的行数。

    3.

    执行的是DQL语句(查询语句),返回的是一个ResultSet类的结果集对象

    4.ResultSet:结果集对象——封装结果集的对象

    1.

    next()方法,游标向下一行
    默认游标:不能取数据
    游标向下一行:可以把每一列的内容取出
    获取数据的方法,一次获取(游标指向的某行中)某一列的数据。

    getxx(),xx代表数据类型

    2.

    5.PreparedStatment:执行sql的对象

  • 相关阅读:
    更改sql server数据库所有者的对象
    对C#委托及事件委托的理解
    印度人是怎样开发软件的?
    SQL常用函数
    Ajax学习1
    Ajax学习2
    什么是ORM?
    jQuery 移动网页到制定的位置
    Juery 控件的取值赋值
    js禁用滚动条
  • 原文地址:https://www.cnblogs.com/maomaodesu/p/11713546.html
Copyright © 2011-2022 走看看