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

JDBC编程

作者头像
一点儿也不潇洒
发布2018-08-07 10:20:11
5500
发布2018-08-07 10:20:11
举报
文章被收录于专栏:肖洒的博客肖洒的博客

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编程之数据准备

建两张表:
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;

注:

id:没有业务含义的逻辑主键
auto_increment:自增长
default '' :默认值为空字符串
engine = InnoDB:设置MySQL的存储引擎,InnoDB是存储引擎的一种,支持事物。
插入数据:
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. 清理环境
实现程序:
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编程之数据更新

数据库连接方法
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;
    }
插入数据方法
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();
    }
}
更新方法
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();
    }
}
删除记录的方法
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
编程实现
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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、数据库基础知识
    • 1、关系数据模型:
      • 术语
      • 范式:
  • 二、MySQL入门
    • 1、MySQL数据类型简介
      • 整数
      • 实数(带有小数部分的数字)
      • 字符串
      • 日期
      • 数据类型选择准则
  • 三、JDBC编程
    • 1、JDBC简介
      • JDBC概述
    • JDBC的组成
      • JDBC Driver API
    • 2、JDBC编程之数据准备
      • 建两张表:
      • 插入数据:
    • 3、JDBC编程之数据查询
      • JDBC编程流程
    • 4、JDBC编程之数据更新
      • 数据库连接方法
      • 插入数据方法
      • 更新方法
      • 删除记录的方法
    • 5、JDBC编程之事务处理
      • 事务概述
      • 事务的四个基本特征
      • 事物的语句
      • 编程实现
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档