zoukankan      html  css  js  c++  java
  • Java第三十五天,用JDBC操作MySQL数据库(一),基础入门

    一、JDBC的概念

    Java DataBase Connectivity

    从字面意思我们也不难理解,就是用Java语言连接数据库的意思

    JDBC定义了Java语言操作所有关系型数据库的规则(接口)。即用同样的语句操作不同类型的关系型数据库。在这里需要注意的是,Sun公司给出了操作数据库的接口,而接口的实现类(数据库驱动jar包)由各大数据库产商自行设计完成!

    二、简要概述步骤

    • 导人驱动jar包
    • 注册驱动
    • 获取数据库连接对象 Connection
    • 定义sql语句
    • 获取执行sq1语句的对象 Statement
    • 执行sq1语句,接受ql语句的执行的返回结果
    • 处理sql语句的执行结果

    友情小提示:

    在导入jar驱动包的时候,可以通过两种方式:

    ① 在工程下新建一个目录(推荐libs,这样显得规范),将驱动jar包放到libs目录下,然后鼠标右键libs选中add as library

    ② 将jar驱动包放在指定的位置(推荐本项目的libs目录下),然后依次选中 File==>Project Structure==>Modules===>Dependencies===>+===>jars or directories

    三、简单入门程序

    import java.sql.*;
    
    public class demo1 {
        public static void main(String[] args) throws ClassNotFoundException, SQLException {
            //注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //连接数据库,并返回连接对象 参数分别为数据库url 数据库用户 数据库用户密码
            Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306","root","123456");
            //定义sql执行语句,注意语句末尾不需要加封号
            String sql = "show databases";
            //获取执行sql语句的对象
            Statement statement = conn.createStatement();
            ResultSet resultSet = statement.executeQuery(sql);
            System.out.println("指定目标存在以下数据库:");
            while (resultSet.next()){
                System.out.println(resultSet.getString(1));
            }
            statement.close();
            conn.close();
        }
    }
    

    可以看出成功的执行了

    四、知识点详解

    1.DriverManager

    驱动管理类

    功能:

    (1)注册驱动

    在API文档中,DriverManager类有这样一个方法:

    static void registerDriver(Driver driver)  
    
    
    //注册与给定的驱动程序 DriverManager

    但是我们注册驱动时,明明写的是下面这行代码啊:

    Class.forName("com.mysql.jdbc.Driver");

    这两行代码是如何关联起来的呢?我们知道:

    在java里面任何class都要装载在虚拟机上才能运行。而 Class.forName(xxx.xxx.xxx) 这段代码就是装载类用的(和new 不一样),它返回的是一个类。静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了。而且以后不会再走这段静态代码了。Class.forName(xxx.xxx.xxx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段

    那么Class.forName(xxx.xxx.xxx)使用的环境是什么呢?

    假如有这样一个字符串变量,它代表一个类的路径(包名.类名),那么我们如何实例化它呢?那就是用这个方法了。注意:

    Class object = (Class)Class.forName("pacage.Class").newInstance();

    等效于

    Class object = new Class();

    通过上面的分析,我们大概可以猜测

    static void registerDriver(Driver driver)

    这行代码应该就是

    com.mysql.jdbc.Driver

    类中的静态代码段,我们可以验证一下:

    在这里,还有一个需要注意的细节,那就是JDBC 5 版本之后,我们不需要自己注册数据库驱动了,为什么呢?因为 jar 驱动包已经帮我们注册了,请看下面的截图:

    (2)获取数据库连接对象

    注意:

    在进行数据库连接时,如果数据库是本机的,且数据库占用的端口是3306,那么连接的代码可以简写成如下格式:

    Connection conn = DriverManager.getConnection("jdbc:mysql://","user","passwd");
    Connection conn = DriverManager.getConnection("jdbc:mysql:///数据库名","user","passwd");

    2.Connection

    数据库连接接口

    (1)获取执行sql语句的对象

    Statement createStatement()

    PreparedStatement prepareStatement(String sql) 

    (2)管理事务

    事务:业务操作,一个业务通常有许多步骤,这些步骤只允许同时成功或者同时失败

    开启事务:

    void setAutoCommit(boolean autoCommit) 

    参数为 false 时开启事务

    提交事务:

    void commit()

    回滚事务:

    void rollback()

    3.Statement

    执行sql语句类

    用于执行静态SQL语句并返回其生成的结果的对象

    boolean execute(String sql)

    int executeUpdate(String sql) ===> 执行给定的SQL语句,这可能是 INSERT、 UPDATE、 DELETE语句,或者不返回任何内容,如SQL DDL语句的SQL语句,该返回值是影响的行数

    DML语句包括 INSERT、 UPDATE、 DELETE语句

    ResultSet executeQuery(String sql) ===> 执行DQL(查询)语句,返回ResultSet对象

    4.ResultSet

    结果集类

    5.PreparedStatement

    执行sql语句类

    用于执行动态SQL语句并返回其生成的结果的对象

  • 相关阅读:
    洛谷2444(Trie图上dfs判环)
    【做题】Codeforces Round #453 (Div. 1) D. Weighting a Tree——拆环
    【做题】POJ3469 Dual Core CPU——第一道网络流
    【做题】atc_cf17-final_E
    【做题】spoj4060 A game with probability——dp
    Matlab AlexNet 识别花
    minutia cylinder code MCC lSSR 匹配算法
    Gabor filter for image processing and computer vision
    MATLAB 去掉数组里面不要的元素
    NBIS指纹特征提取与匹配软件使用
  • 原文地址:https://www.cnblogs.com/viplanyue/p/12700439.html
Copyright © 2011-2022 走看看