导航

JDBC

Posted on 2020-07-24 20:59  乔伊_413  阅读(318)  评论(0编辑  收藏  举报

JDBC

数据库驱动

JDK提供jdbc接口,就是java怎样去调用数据库,但是注意提供的只是接口,数据库提供商实现这些接口,就是所谓数据库驱动。java调用数据库驱动,驱动真正执行数据库操作。

 

 

常用数据库的驱动程序驱动程序包名

Oracle数据库:

驱动类的名字:oracle.jdbc.driver.OracleDriver JDBC URL:jdbc:oracle:thin:@dbip:port:databasename 说明:驱动程序包名有可能会变 JDBC URL中各个部分含义如下: dbip –为数据库服务器的IP地址,如果是本地可写:localhost或127.0.0.1。 port –为数据库的监听端口,需要看安装时的配置,缺省为1521。 databasename –为数据库的SID,通常为全局数据库的名字。

 

SQL Server数据库:

驱动程序包名:msbase.jar mssqlserver.jar msutil.jar 驱动类的名字:com.microsoft.jdbc.sqlserver.SQLServerDriver JDBC URL:jdbc:microsoft:sqlserver://dbip:port;DatabaseName=databasename 说明:驱动程序包名有可能会变 JDBC URL中各个部分含义如下: dbip –为数据库服务器的IP地址,如果是本地可写:localhost或127.0.0.1。 port –为数据库的监听端口,需要看安装时的配置,缺省为1433。 databasename –数据库的名字。

MySQL数据库:

驱动程序包名:mysql-connector-Java-3.1.11-bin.jar 驱动类的名字:com.mysql.jdbc.Driver / com.mysql.cj.jdbc.Driver JDBC URL:jdbc:mysql://dbip:port/databasename 说明:驱动程序包名有可能会变 JDBC URL其中各个部分含义如下: dbip –为数据库服务器的IP地址,如果是本地可写:localhost或127.0.0.1。 port –为数据库的监听端口,需要看安装时的配置,缺省为3306。 databasename –数据库的名字。

 

对于开发人员,只需掌握JDBC的接口操作即可

java.sql

javax.sql

数据库驱动包:mysql-connector-java-5.1.47.jar

 

第一个JDBC程序

1、创建一个普通Java项目

2、准备数据库驱动包

新建一个lib目录,导入jar包,右键选中add as Library

 

 

3、数据库设计准备:

 create database jdbc_study character set utf8 COLLATE utf8_general_ci;
 ​
 use jdbc_study;
 ​
 create table users(
  id int primary key,
  `name` varchar(20),
  `password` varchar(20),
  email varchar(30),
  birthday TIMESTAMP
 );
 ​
 insert into users(id,`name`,`password`,email,birthday)
 values(1,'Joey','111111','3@.com','2020-1-1'),
 (2,'Rose','122221','4@.com','2020-2-1'),
 (3,'Mike','133331','2@.com','2020-2-5');
 ​

4、编写测试代码

 package com.hch.jdbc;
 ​
 import java.sql.*;
 ​
 public class Demo01_TestJDBC {
     public static void main(String[] args) throws ClassNotFoundException, SQLException {
         //1、加载驱动
         Class.forName("com.mysql.cj.jdbc.Driver");
 ​
         //2、用户信息和url
         String url = "jdbc:mysql://localhost:3306/jdbc_study?useUnicode=true&characterEncoding=utf8&useSSL=true";
         String username = "root";
         String password = "hch520";
 ​
         //3、连接成功,数据库对象 connection代表数据库
         Connection connection = DriverManager.getConnection(url, username, password);
 ​
         //4、执行sql对象
         Statement statement = connection.createStatement();
 ​
         //5、用Sql对象去执行sql
         String sql = "select * from users";
         ResultSet resultSet = statement.executeQuery(sql);  //resultSet返回的结果集,封装了全部查询对象
         while(resultSet.next()){
             System.out.println("id"+resultSet.getObject("id"));
             System.out.println("name"+resultSet.getObject("name"));
             System.out.println("pwd"+resultSet.getObject("password"));
             System.out.println("email"+resultSet.getObject("email"));
             System.out.println("birth"+resultSet.getObject("birthday"));
        }
         //6、释放连接
         resultSet.close();
         statement.close();
         connection.close();
    }
 }
 ​

步骤总结:

1、加载驱动

2、连接数据库DriverManager

3、获得执行sql的对象Statement

4、获得返回的结果集(查询的)

5、释放连接

DriverManager

 Class.forName("com.mysql.cj.jdbc.Driver"); //固定写法
 Connection connection = DriverManager.getConnection(url, username, password);
 ​
 //connection 代表数据库
 //数据库设置自动提交
 connection.setAutoCommit();
 //事务提交
 connection.commit();
 //事务滚回
 connection.rollback();
 ​

URL

  String url = "jdbc:mysql://localhost:3306/jdbc_studyuseUnicode=true&characterEncoding=utf8&useSSL=true";
 ​
 //mysql --3306
 //协议://主机名:端口号/数据库名?参数1&参数2&...
 ​

Statement执行SQL的对象 PrepareStatement执行SQL的对象

 String sql = "Select * from users"; //编写SQL
 ​
 statement.excuteQuery(); //查询操作返回的 ResultSet
 statement.excute();  //执行任何SQL
 statement.excuteUpdate();  //更新,插入,删除理论上都是修改都用这个,返回一个受影响的行数

ResultSet 查询的结果集 : 封装了所有的查询结果

获得指定的数据类型:

 resultSet.getObject()
 resultSet.getInt()
 resultSet.getString()
 resultSet.getFloat()
 resultSet.getDate()
         

释放资源:

 resultSet.close();
 statement.close();
 connection.close();

statement对象

https://blog.csdn.net/yhl_jxy/article/details/73695389