原生态JDBC

  JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API.JDBC是java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用java语言编写的接口和类组成.

  JDBC需要连接驱动,驱动是两个设置要进行通信,满足一定通信数据格式,数据格式由设备提供商规定,设备提供商为设备提供驱动软件,通过软件可以与该设备进行通信.今天我们使用的是mysql的驱动mysql-connector-java-5.1.37-bin.java

JDBC规范(掌握四个核心对象)

1.DriverManager:用于注册驱动

2.Connection:标识与数据库创建的连接

3.Statement:操作数据库sql语句的对象

4.:ResultSet :结果集或者是一张虚表.

JDBC的原理:

java提供访问数据库规范称为JDBC,而生产厂商提供规范的实现类称为驱动.

JDBC是接口,驱动是接口的实现,没有驱动将无法完成数据库的连接,从而不能操作数据库,每个数据库厂商都需要提供自己的驱动,用来连接自己公司的数据库,也就是说驱动一般都是有数据库生产商提供.

JDBC入门案例 

执行的sql语句

CREATE DATABASE qingmu;
USE qingmu;
CREATE TABLE category(
cid INT PRIMARY KEY AUTO_INCREMENT,
cname VARCHAR(100)
) INSERT INTO category (cname) VALUES('家电');
INSERT INTO category (cname) VALUES('服饰');
INSERT INTO category (cname) VALUES('化妆品');

导入驱动

创建lib目录,存放mysql的驱动mysql-connector-java-5.1.37-bin.jar
选中mysql的jar包,右键选择“ Add as Library...” 完成jar导入

 

开发步骤和案例实现:

package com.qingmu.test;

import org.junit.Test;

import java.sql.*;

/**
* @Auther:qingmu
* @Description:脚踏实地,只为出人头地
* @Date:Created in 21:50 2019/3/24
*/
public class JdbcTest {
/**
* 使用原生态Jdbc时,
* 1.注册驱动
* 2.获取连接
* 3.获取执行sql语句的对象
* 4.获取结果集
* 5.处理结果集
* 6.关闭资源
* @throws ClassNotFoundException
* @throws SQLException
*/
@Test
public void test1() throws ClassNotFoundException, SQLException {
// 注册驱动
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/qingmu";
String username = "root";
String password = "root";
// 获取连接
Connection connection = DriverManager.getConnection(url, username, password); String sql = "select * from category";
// 获取执行sql语句的对象
Statement statement = connection.createStatement();
// 获取结果集
ResultSet resultSet = statement.executeQuery(sql);
// 处理结果集
while (resultSet.next()) {
int id = resultSet.getInt("cid");
String username1 = resultSet.getString("cname");
System.out.println(id + username1);
}
// 关闭资源
resultSet.close();
statement.close();
connection.close();
}
}

API详解:

1.注册驱动

    告诉JVM,我们要使用的是那个数据库

        DriverManager.registerDriver(new con.mysql.jdbc.Driver());不建议使用,

    因为:java.sql.DriverManager类:管理一组JDBC驱动程序的基本服务

    静态方法:

      static void registerDriver(Driver driver):向DriverManager注册给定驱动程序.

       参数:java.sql.Driver接口:每个驱动程序类必须实现的接口.

         mysql的驱动程序中,必然有一个实现了java.sql.Driver接口

         1.在Driver中有静态代码块,是用来进行注册驱动的

            而我们的代码一旦被执行,Driver类中静态代码块也会被执行

        相当于被注册了两次.

        所以不建议

        2.如果只是使用静态代码块进行注册时候,代码就会被写死,失去了灵活性,所以也不建议使用.

    原因:导致驱动被注册两次

    强烈依赖数据库的驱动jar.

    解决办法:

    3.class.forName("com.mysql.jsbc.Driver")

Driver源码:
package com.mysql.jdbc;

import java.sql.DriverManager;
import java.sql.SQLException; public class Driver extends NonRegisteringDriver implements java.sql.Driver {
public Driver() throws SQLException {
}
// 静态代码块
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
}

获取连接:

static Connection getConnection(String url,String user,String password):试图建立到给定数据库URL的连接

参数说明:

  url:需要连接数据库的位置(网址)

  user用户名

  password密码

扩展:
URL:SUN公司与数据库厂商之间的一种协议。
协议子协议 IP :端口号数据库 mysql: jdbc:mysql://localhost:3306/day04 或者 jdbc:mysql:///day04(默认
本机连接) oracle数据库: jdbc:oracle:thin:@localhost:1521:sid

API详解:java.sql.Connection接口:一个连接
接口的实现在数据库驱动中。所有与数据库交互都是基于连接对象的。
Statement createStatement(); //创建操作sql语句的对象

API详解:java.sql.Statement接口: 操作sql语句,并返回相应结果

String sql = "某SQL语句";
获取Statement语句执行平台:Statement stmt =con.createStatement();

常用方法:

int executeUpdate(String sql); --执行insert update delete语句.
ResultSet executeQuery(String sql); --执行select语句.
boolean execute(String sql); --仅当执行select并且有结果时才返回true,执行其他的语句返回false.

API详解:处理结果集(注:执行insert、update、delete无需处理)

ResultSet实际上就是一张二维的表格,我们可以调用其 boolean next() 方法指向某行记录,当第一次调用
next() 方法时,便指向第一行记录的位置,这时就可以使用ResultSet提供的 getXXX(int col) 方法来获取指
定列的数据:(与数组索引从0开始不同,这里索引从1开始)

rs.next();//指向第一行
rs.getInt(1);//获取第一行第一列的数据

常用方法:

Object getObject(int index) /  Object getObject(String name) 获得任意对象
String getString(int index) / String getString(String name) 获得字符串
int getInt(int index) / int getInt(String name) 获得整形
double getDouble(int index) / double getDouble(String name) 获得双精度浮点型

API详解:释放资源

与IO流一样,使用后的东西都需要关闭!关闭的顺序是先得到的后关闭,后得到的先关闭。

rs.close();
stmt.close();
con.close();

3.5 JDBC工具类

使用工具类对数据库进行增删改查


package com.qingmu.test;

import org.junit.After;
import org.junit.Before;
import org.junit.Test; import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; /**
* @Auther:qingmu
* @Description:脚踏实地,只为出人头地
* @Date:Created in 12:51 2019/3/25
*/
public class UtilsTest { private Connection connection = null;
private Statement statement = null;
private ResultSet resultSet = null; // 获取连接,执行sql的语句
@Before
public void before() throws SQLException {
connection = JDBCUtils.getConnection();
statement = connection.createStatement();
} /**
* 对数据库进行更新
*
* @throws SQLException
*/
@Test
public void updateTest() throws SQLException {
String sql = "update category set cname = '钢铁侠' where cid = 1";
int i = statement.executeUpdate(sql);
System.out.println(i);
// 关闭资源
} /**
* 对数据库进行删除
*/
@Test
public void deleteTest() throws SQLException { String sql = "delete from category where cname = '钢铁侠'";
int i = statement.executeUpdate(sql);
System.out.println(i);
// 关闭资源
} /**
* 向数据库中增加一条数据
*/
@Test
public void insertTest() throws SQLException { String sql = "insert into category values(4,'猪猪侠')";
int i = statement.executeUpdate(sql);
System.out.println(i);
// 关闭资源
} /**
* 从数据库中查询出一条语句
*/
@Test()
public void queryTest() throws SQLException {
String sql = "select * from category";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
int cid = resultSet.getInt("cid");
String cname = resultSet.getString("cname");
System.out.println(cid + "=======" + cname);
}
// 关闭资源
} //在这里进行关闭资源
@After
public void after() {
JDBCUtils.closeResource(connection, statement, resultSet);
}
}

在这里本人只是进行了简单的 测试

原生态JDBC的更多相关文章

  1. mybatis由浅入深day01_1课程安排_2对原生态jdbc程序中问题总结

    mybatis 第一天 mybatis的基础知识 1 课程安排: mybatis和springmvc通过订单商品 案例驱动 第一天:基础知识(重点,内容量多) 对原生态jdbc程序(单独使用jdbc开 ...

  2. 01.原生态jdbc程序中问题总结

    1.数据库启动包配置到工程目录中(mysql5.1) mysql-connector-java-5.1.7-bin.jar 2.jdbc原生态操作数据库(程序) 操作mysql数据库 1 packag ...

  3. 原生态jdbc的应用技术

    为了更好的了解jdbc,最近查阅了前期学习的资料,整理归纳了一下,整理出来了一套jdbc常用的工具类.之所以在这里撰文,一来可以和大家共享技术的魅力,二来可以方便以后的查阅方便.以下是一个jdbc的优 ...

  4. 02Mybatis_原生态jdbc编程中的问题总结——从而引生出为什么要用Mybatis

    我们先用jdbc去编写一个例子: 第一步:建表 /* SQLyog v10.2 MySQL - 5.1.72-community : Database - mybatis ************** ...

  5. 对原生态jdbc程序中问题总结

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...

  6. 原生态JDBC问题的总结

    package com.js.ai.modules.aiyq.testf; import java.sql.Connection; import java.sql.DriverManager; imp ...

  7. MyBatis基础入门--知识点总结

    对原生态jdbc程序的问题总结 下面是一个传统的jdbc连接oracle数据库的标准代码: public static void main(String[] args) throws Exceptio ...

  8. MyBatis入门基础(一)

    一:对原生态JDBC问题的总结 新项目要使用mybatis作为持久层框架,由于本人之前一直使用的Hibernate,对mybatis的用法实在欠缺,最近几天计划把mybatis学习一哈,特将学习笔记记 ...

  9. 01Mybatis_课程安排

    课程安排: mybatis和springmvc通过订单商品 案例驱动 第一天:基础知识(重点,内容量多) 对原生态jdbc程序(单独使用jdbc开发)问题总结 mybatis框架原理   (掌握) m ...

随机推荐

  1. 【LeetCode每天一题】Find First and Last Position of Element in Sorted Array(找到排序数组中指定元素的开始和结束下标)

    Given an array of integers nums sorted in ascending order, find the starting and ending position of ...

  2. mac上命令行解压rar

    时间进入到2018年12月,mac上好用的rar解压工具要收费了.被逼的没办法,用命令行吧,谁让咱擅长呢? 1,使用Homebrew安装unrar,没有自己装去 brew install unrar ...

  3. yum 安装报错 File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:

    原因: 这是因为yum采用python作为命令解释器,这可以从/usr/bin/yum文件中第一行#!/usr/bin/python发现.而python版本之间兼容性不太好,使得2.X版本与3.0版本 ...

  4. Linux系统查看日志信息总结

    命令: cat tail -f #系统日志文件存放路径: /var/log/message #系统启动后的信息和错误日志 /var/log/secure #与安全相关的日志信息 /var/log/ma ...

  5. easyui combobox 动态加载数据C#

    <script type="text/javascript" src="Scripts/jquery-1.8.2.min.js"></scri ...

  6. cocos2dx C++ imageView(图片/九宫格)相关属性大全

    ImageView * imageView = ImageView::create("cocosui/ccicon.png");//新建图片 imageView->setSc ...

  7. webpack的使用一

    1.为什么使用webpack 模块化,让我们可以把复杂的程序细化为小的文件; 类似于TypeScript这种在JavaScript基础上拓展的开发语言:使我们能够实现目前版本的JavaScript不能 ...

  8. MongoDB Driver:使用正确的姿势连接复制集

    from:https://yq.aliyun.com/articles/8461?spm=5176.7937264.222114.10.s2oqcT   摘要: MongoDB复制集(Replica ...

  9. Spring Boot中Service用@Transactional 注解

    一般来说function2和function1用的是同一个Transaction. 这个取决于@Transactional 的 propagation设置(事务的传播性) 默认的是 1 @Transa ...

  10. MOG插件(葡萄牙语,略作翻译)

    这次记录下MOG大神的插件,自从我发现了这个插件,似乎开启了一个新世界诶~~~ 网址 https://atelierrgss.wordpress.com 1. MOG_YuruYuri.js CARA ...