前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JDBC编程

JDBC编程

作者头像
一点儿也不潇洒
发布于 2018-08-07 02:20:11
发布于 2018-08-07 02:20:11
60500
代码可运行
举报
文章被收录于专栏:肖洒的博客肖洒的博客
运行总次数:0
代码可运行

JDBC: Java Database Connectivity

一、数据库基础知识

1、关系数据模型:

术语
  • 关系:一张二维表
  • 元祖:表中的一行
  • 属性:表中的一列
  • 属性域:属性的取值范围
  • 主键:唯一的表示表中的元祖
  • 外键:一个关系中包含另一个关系的主键
范式:

范式:数据库设计需要满足的规范.

  • 1NF:对属性的原子性约束,不可再分解。不能有嵌套表。
  • 2NF: 对记录的唯一性约束,要求记录有唯一标示,实体必须是唯一的。所有的主键字段都要依赖与非主键字段。
  • 3NF:对字段冗余性的约束,要求任何字段都不能派生于其他字段。也就是说非主键字段直接不能相互依赖。

二、MySQL入门

1、MySQL数据类型简介

整数
  • TINYINT:1个字节,8位
  • SMAILLINT:2个字节,16位
  • MEDIUMINT:3个字节,24位
  • INT:4个字节,32位
  • BIGINT:8个字节,64位
实数(带有小数部分的数字)
  • FLOAT:4个字节,32位
  • DOUBLE:8个字节,64位
  • DECIMAL:存储精确的小数,指定小数点前后的位数。eg.DECIMAL(20,2),表示小数点后存储两个数字,小数点前存储18个数字。
字符串
  • VARCHAR:用于保存可变长度的字符串。
  • CHAR:固定长度的字符串。0~255任意值。
  • TEXT、BLOB:存储较长的字符串。
日期
  • DATETIME:保存大范围的值,从1001~9999年,精度为秒。8个字节。
  • TIMESTAMP:时间戳类型,1970.1.1~2038年,即格林威治时间到现在所经历的秒数。4个字节。
数据类型选择准则
  • 最小原则
  • 简单原则
  • 避免索引列上的NULL

三、JDBC编程

1、JDBC简介

JDBC概述
  • ODBC(Open Database Connectivity)
  • JDBC(Java Database Connectivity)

JDBC的组成

  • JDBC API:面向开发人员
  • JDBC Driver API:面向底层驱动开发商
JDBC Driver API

主要编程接口:

  • DriverManager:装载驱动程序,并为创建数据库连接提供支持
  • Connection:连接某一指定的数据库
  • Statement:执行SQL语句,获取查询结果的方法。

JDBC驱动程序主要有四种类型:

  • JDBC-ODBC bridge
  • 部分Java技术的本地API驱动程序
  • 全部基于Java技术的本地API驱动程序
  • 全部基于Java技术的本地协议驱动程序

2、JDBC编程之数据准备

建两张表:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
creat table tbl_user(
id int(11) unsigned not null auto_increment,
name varchar(50) not null default '',
email varchar(50) nit null default '',
primary key(id))
engine = InnoDB
default charset = utf8;


creat table tbl_address(
id int(11) unsigned not null auto_increment,
city varchar(20) default null,
country varchar(20) default null,
primary key (id))
engine = InnoDB
default charset = utf8;

注:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
id:没有业务含义的逻辑主键
auto_increment:自增长
default '' :默认值为空字符串
engine = InnoDB:设置MySQL的存储引擎,InnoDB是存储引擎的一种,支持事物。
插入数据:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
insert into tbl_user(id, name, password, email)
values
(1, 'xiaosa', '123456', 'xiaosa.nicolo@qq.com'),
(2, 'nicolo', '123456', '1241251168@qq.com');

insert into tbl_address(city, country, user_id)
values('xian', 'china', 1);

insert into tbl_address(city, country, user_id)
values('beijing', 'china', 2);

3、JDBC编程之数据查询

安装驱动,下载mysql-connector-java。 将mysql-connector-java-5.1.42-bin.jar包拷到WEB-INF目录下。

JDBC编程流程
  1. 加载驱动
  2. 打开连接
  3. 执行查询
  4. 处理结果
  5. 清理环境
实现程序:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class JDBCTest{
    pubilc static void main(String[] args){
    String sql = "SELECT * FROM tbl_user";
    Connection conn = null;
    Statement st = null;
    ResultSet rs = null;

    try{
        //注册MySQL的JDBC驱动程序,class类是继承Object类
        //forName方法用来初始化参数指定的类并创立一个对应的实例对象
        Class.forName("com.mysql,jdbc.Driver");

        //获取MySQL的数据库连接
        //getConnection方法需要传入三个参数:MySQL数据库的URL、MySQL数据库的用户名、密码
        ////locahost:主机,3306:MySQL的端口,jsp_db:将要使用的数据库
        conn = DriverManager.getConnection("jdbc:mysql://locahost:3306/jsp_db","root","");

        //创建st对象
        st = conn.createStatement();

        //使用executeQuery方法发生sql语句返回rs结果集
        rs = st.executeQuery(sql);

        while(rs.next()){
            System.out.print(rs.getInt("id") * " ");
            System.out.print(rs.getString("name") * " ");
            System.out.print(rs.getString("password") * " ");
            System.out.print(rs.getString("email") * " ");
            System.out.println();
        }catch (Exception e){
            e.printStackTrace();
        }finally{
            try{
                //关闭rs结果集
                rs.closee();
                }catch(Exception e2){

                }

            try{
                //关闭st对象
                st close();
                }catch(Exception e3){

                }

            try{
                //关闭数据库连接
                conn close();
                }catch(Exception e4){

                }
        }
    }
}
}

4、JDBC编程之数据更新

数据库连接方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static Connection getConnection(){
    Connection conn = null;
    try{
        Class.forName("con.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://locahost:3306/jsp_db","root"," ");
    }catch(Exception e){
        e.printStackTrace();
    }
    return conn;
    }
插入数据方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void insert(){
    //获取数据库连接
    Connection conn = getConnection();

    try{
        String sql = "INSERT INTO tbl_user(name, password, email)" + "VALUES('Tom', '123456', 'tom@qq.com')";
        Statement st = conn.createStatement();
        int count = St.executeUpdate(sql);
        System.out.println("向用户表中插入了" + count + " 条记录");
        conn.close();
    }catch(Exception e){
        e.printStackTrace();
    }
}
更新方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void update(){
//获取数据库连接
    Connection conn = getConnection();

    try{
        String sql = "UPDATE tbl_user SET email = 'tom@126.com' WHERE name = 'Tom'";
        Statement st = conn.createStatement();
        int count = St.executeUpdate(sql);
        System.out.println("向用户表中更新了" + count + " 条记录");
        conn.close();
    }catch(Exception e){
        e.printStackTrace();
    }
}
删除记录的方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void dele(){
//获取数据库连接
    Connection conn = getConnection();

    try{
        String sql = "DELETE FROM tbl_user WHERE name = 'Tom'";
        Statement st = conn.createStatement();
        int count = St.executeUpdate(sql);
        System.out.println("从用户表中删除了" + count + " 条记录");
        conn.close();
    }catch(Exception e){
        e.printStackTrace();
    }
}

5、JDBC编程之事务处理

事务概述
  • 事务:数据库维护数据一致性的单位,在每个事务结束时都能保持事务的一致性。
事务的四个基本特征
  • 原子性:事务中的操作都被视为一个逻辑单元。 这个事务中的逻辑单元要么全部成功,要么全部失败。事务中的元素是一个整体,是不可分割的。
  • 一致性:事务开始之前和事务结束以后,数据库都处于一致性状态。数据库的完整性约束没有被破坏。
  • 隔离性:对数据库的修改的多个事务是互相隔离的。说明事务必须是独立的。
  • 持久性:事务完成之后,它对数据的影响是永久的,
事物的语句
  • 开始事物:BEGIN TRANSACTION
  • 提交事物:COMMIT TRANSACTION
  • 回滚事物: ROLLBACK TRANSACTION
编程实现
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class TransactionTest{

public static Connection getConnection(){
    //数据库连接
    Connection conn = null;

    try{
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsp_db, root, " ");
    }catch(Exception e){
        e.printStackTrace();
    }
    return conn;
}

public static void insertUserData(){
    //插入用户数据

    Connection conn = getConnection;

    try{
        String sql = "INSERT INTO tbl_user(id, name, password, email)" + "VALUES(10, 'Tom', '123456', 'tom@gmail.com')";
        Statement st = conn.createStatement();
        int count = st.executeUpdate(sql);
        System.out.println("向用户表插入了 " + count + " 条记录");
        conn.close();
    }catch(Exception e){
        e.printStackTrace();
    }
}

public static void insertAddressData(){

 Connection conn = getConnection();
 try{
 Sting sql = "INSERT INTO tbl_address(id, city, country, user_id)" + "VALUES(1, 'xian','Chian', '10')";
 Statement st = conn.createStatement();
 int count = st.executeUpdate(sql);
 System.out.println("向地址表中插入了 " + count +" 条记录");
}catch(Exception e){
        e.printStackTrace();
    }
public static void main(String[] agrs){
    insertUserData();
    insertAddressData();
}

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JSP (3)------JDBC编程1
DriverManager : 驱动程序管理类,用来装载驱动程序,为创建数据库连接提供支持。
py3study
2020/01/14
5790
Java中JDBC的使用详解[通俗易懂]
URL用于标识数据库的位置,程序员通过URL地址告诉JDBC程序连接哪个数据库,URL的写法为:
全栈程序员站长
2022/09/22
1.6K0
Java中JDBC的使用详解[通俗易懂]
jdbc就是这么简单
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。
好好学java
2018/08/03
1.2K0
JDBC 编程
在Java语言中,有一个专门连接数据库的规范(JDBC),专门负责连接数据库进行数据操作。各个数据库提供商会根据这套规范(接口)编写相关的实现类,封装成一个 jar 包供用户下载使用。所以在进行编程时,需要将相应的 jar 包导入到工程文件下的 lib 目录下,并建立依赖。
Carlos Ouyang
2019/08/19
4380
JDBC 编程
java学习day18----JDBC操作基本操作
1.JDBC了解 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。 2.开发步骤 1.创建一个java项目 2.导入mysql的数据库驱动jar包 驱动包 3.注册驱动 Class.forName(“”) 4.获取与数据库的链接 5.得到代表发送和执行SQL语句的对象 Statement 6.执行语句 7.如果执行的是查询语句,就会有结果集,处理 8.释放占用的资源 3.代码
曼路
2018/10/18
4150
Java 连接操作 MySQL 数据库(增删查改操作)
MySQL 操作有不懂的,可查看我的 MySQL教程 环境 MySQL 5.5 版本 eclipse MySQL 连接驱动 mysql-connector-java-5.1.18-bin.jarmysql8.0之前的版本与之后的版本使用的jar包是不同的,在使用时也有一定的区别。这里,我的 MySQL 版本为 5.5。$\color{red}连接驱动链接放在文末,需要可自行下载$ 准备工作 将 jar 包添加到项目中,右键项目,如下,选择Configure Build Path... [format,png
ruochen
2021/05/15
5K0
Java 连接操作 MySQL 数据库(增删查改操作)
JDBC
首先需要导入数据库驱动 将jar包拷贝到建立好的lib文件夹下然后对lib文件进行右键鼠标
Albert_xiong
2021/06/21
1.1K0
JDBC
[数据库操作]Java中的JDBC的使用方法.
前言: 想必大家在实际编码中都遇到过JDBC的操作, 这里仅做自己的一个总结, 有错误和不完整之处还请大家提出来.  1,JDBC其实一套规范(接口) 数据库厂商需要实现此接口(实现类)--数据库驱动 2,jdbc的作用: 可以和数据库创建链接 发送sql语句 接收返回值,处理结果 3,api详解(java.sql或者javaX.sql) DriverManager 类:   管理一组 JDBC 驱动程序的基本服务。 常用方法: registerDriver(Driver):注
一枝花算不算浪漫
2018/05/18
8700
原生的JDBC教程详解
JDBC 1.1 JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。JDBC是Java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成。 JDBC需要连接驱动,驱动是两个设备要进行通信,满足一定通信数据格式,数据格式由设备提供商规定,设备提供商为设备提供驱动软件,通过软件可以与该设备进行通信。 今天我们使用的是mysql的驱动mysql-connecto
Java学习
2018/04/17
3.6K0
原生的JDBC教程详解
原生数据库操作JDBC
1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 * JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
不愿意做鱼的小鲸鱼
2022/09/24
6670
原生数据库操作JDBC
JDBC之常规插入,Statement和PreparedStatement批处理时间问题
张哥编程
2024/12/13
970
JavaWeb07-JDBC(Java真正的全栈开发)
jdbc 一、JDBC介绍 1. JDBC定义 JDBC(Java Data Base Connectivity,java数据库连接),说白了就是用Java语言来操作数据库.它是一种用于执行SQL语句
Java帮帮
2018/03/16
1.1K0
JavaWeb07-JDBC(Java真正的全栈开发)
JDBC连接MySQL数据库及演示样例
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,能够为多种关系数据库提供统一訪问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发者提供了一个标准的API,据此能够构建更高级的工具和接口,使数据库开发者能够用纯 Java API 编写数据库应用程序,而且可跨平台执行,而且不受数据库供应商的限制。
全栈程序员站长
2022/07/13
1.6K0
JDBC连接MySQL数据库及演示样例
MySQL的JDBC连接
JDBC 是 Java Database Connective的缩写,表示使用Java去连接数据库进行数据操作的过程
全栈程序员站长
2022/09/09
3.4K0
Java jdbc Mysql数据库连接
jdbc数据库连接六步走 1. 注册驱动 注册驱动的两种方法 Class.forName("com.mysql.cj.jdbc.Driver"); //mysql8.+版本 Driver driver = new com.mysql.cj.jdbc.Driver(); DriverManager.registerDriver(driver); 2.获取连接 String url = "jdbc:mysql://127.0.0.1:3306/tests"; String user = "root"; Str
吃猫的鱼Code
2023/02/02
4.4K0
java核心技术第三篇之JDBC第一篇
01.JDBC_两个重要的概念: 1).什么是数据库驱动程序:由数据库厂商提供,面向某种特定的编程语言所开发的一套访问本数据库的类库。 驱动包一般由两种语言组成,前端是:面向某种特定编程语言的语言;后端是:本数据库的语言。 可以方便开发人员使用自己的语言来访问本公司的数据库软件。
海仔
2019/08/05
4080
JDBC从零开始的保姆级教程!!!
这里原本最多只能有8个连接,我们使用了9次连接,因为其中当i=3时,我们归还了一个连接,不然会报错
大忽悠爱学习
2021/11/15
5530
JDBC
1.在项目当中创建一个文件夹为lib 2.把Mysql驱动包复制到该文件夹下 3.builder path 编译路径
JokerDJ
2023/11/27
2820
JDBC
JavaWeb后端入门1-JDBC(Eclipse环境)
mysql驱动包为mysql-connector-java-5.1.7-bin.jar
用户6948990
2025/04/03
760
JavaWeb后端入门1-JDBC(Eclipse环境)
Java中的JDBC详解
Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
共饮一杯无
2022/11/28
4790
相关推荐
JSP (3)------JDBC编程1
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验