原生态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. 【Java】-NO.16.EBook.4.Java.1.002-【疯狂Java讲义第3版 李刚】- 数据类型

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.002-[疯狂Java讲义第3版 李刚]- 数据类型 Style:EBook Series:Java ...

  2. script命令录屏

    关于linux上的操作,我们的确可以使用'history'命令来显示出来操作记录,但是有些时候,我们不仅仅需要知道做了什么,还需要知道操作的时候,产生了什么效果,这个时候‘history’命令就显示无 ...

  3. [LeetCode] 系统刷题1_代码风格及边界

    代码风格 说自己不清楚的算法,比如KMP,如果解释不清楚或者写不出来的算法建议不提 注意代码的缩进以及空格的合理运用,使得代码看起来比较整洁有条理 注意边界的条件以及越界 误区: 算法想出来还仅仅不够 ...

  4. 实验源码,DES,AES,RSA,椭圆曲线

    https://pan.baidu.com/s/1CPA-bnLmcJR_AFsNImhUjQ

  5. spring之拦截器

    拦截器 实现HandlerInterceptor接口:注册拦截器<mvc:inteceptors> spring和springMVC父子容器的关系 在spring整体框架的核心概念中,容器 ...

  6. react native初识

    开发的第一步就是搭建rn的开发环境,你可以去官网去查看教程也可以 点击 http://bbs.reactnative.cn/topic/10 进去查看window的开发环境安装的教程:注意:很关键的一 ...

  7. python时间和日期

    一.time 和 calendar 模块可以用于格式化日期和时间 import time; # 引入time模块 ticks = time.time() print "当前时间戳为:&quo ...

  8. 删掉centos原有的openjdk并安装sun jdk

    [环境变量]删掉centos原有的openjdk并安装sun jdk   一.卸载原有openjdk rpm -qa | grep java 之后,将展示出来的全部卸载掉,我这里是5个 rpm -e ...

  9. C# 去重处理字符大小写

    本文展示了如何对集合去重并且处理大小写

  10. 记在Archlinux中安装python的pymssql模块过程中遇到的问题

    为什么要安装这个模块?因为要连接SQLServer数据库. 看到可以使用pyodbc这个模块进行连接,但对odbc不熟悉,所以选用了看起来更简单的 pymssql. 直接执行: pip install ...