一、JDBC 概述

  1、什么是JDBC    

    称为Java数据库连接,它是一种用于数据库访问的应用程序API,由一组用Java语言编写的类和接口组成,有了JDBC就可以用同一的语法对多种关系数据库进行访问,而不用担心其数据库操作语言的差异。

  2、JDBC优缺点

    优点:
      JDBC使得编程人员从复杂的驱动器调用命令和函数中解脱出来,可以致力于应用程序中的关键地方。
      JDBC支持不同的关系数据库,这使得程序的可移植性大大加强。
      JDBC API是面向对象的,可以让用户把常用的方法封装为—个类,以备后用
    缺点:
      使用JDBC,访问数据记录的速度会受到一定程度的影响。
      JDBC结构中包含不同厂家的产品,这就给更改数据源带来了很大的麻烦。

  3、JDBC核心接口与类
  JDBC核心类库包含在java.sql包中。
    类
      DriverManager:负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并注册后才可以使用,同时提供方法来建立与数据库的连接。
      SQLException-有关数据库操作的异常
    接口:
      Connection:特定数据库的连接(会话)。在连接上下文中执行SQL语句并返回结果。
      PreparedStatement:表示预编译的 SQL 语句的对象。
      Statement:用于执行静态 SQL 语句并返回它所生成结果的对象。
      ResultSet :表示数据库结果集的数据表,通常通过执行查询数据库的语句生成 。
      CallableStatement :用于执行 SQL 存储过程的接口。

二、创建 JDBC应用

  1、创建JDBC应用程序的步骤
    1.载入JDBC驱动程序
    2.定义连接URL
    3.建立连接
    4.创建Statement对象
    5.执行查询或更新
    6.结果处理
    7.关闭连接

  2、JDBC连接Mysql

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class Test5 {
public static void main(String[] args) {
String url = "jdbc:mysql://127.0.0.1:3306/scott";
String username = "root";
String password = "root";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
//1、加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2、获得连接
conn = DriverManager.getConnection(url, username, password);
//3、创建sql语句
String sql = "select * from dept where loc = ?";
//4、创建PreparedStatement
pstmt = conn.prepareStatement(sql);
//第一个参数指索引,第二个参数要作为查询语句的一部分
pstmt.setString(1, "New YORK");
//5、执行查询
rs = pstmt.executeQuery();
//6、遍历结果集
while(rs.next()){
System.out.println(rs.getString("dname"));
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//7、关闭流
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(pstmt != null){
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}

  3、JDBC连接Oracle

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.util.Date; public class JdbcTest{
publicstatic void main(String[] args) {
String driver = "oracle.jdbc.OracleDriver"; //驱动标识符
String url = "jdbc:oracle:thin:@localhost:1521:orcl"; //链接字符串
// url ="jdbc:oracle:thin:@10.0.30.64:1521:orcl"; // 连接远程的数据库可以这么写
String user = "scott"; //数据库的用户名
String password = "tiger"; //数据库的密码
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
boolean flag = false; try {
Class.forName(driver);
con = DriverManager.getConnection(url,user, password);
String sql = "select * from emp";
pstm =con.prepareStatement(sql);
rs = pstm.executeQuery();
while(rs.next()) {
int empno = rs.getInt("empno");
String ename =rs.getString("ename");
double sal = rs.getDouble("sal");
Date hiredate =rs.getDate("hiredate");
int deptno = rs.getInt(("deptno"));
System.out.println(empno +"\t"+ ename +"\t"+ sal +"\t"+ hiredate +"\t"+ deptno);
} flag = true;
} catch(ClassNotFoundException e) {
e.printStackTrace();
}
catch(SQLException e) {
e.printStackTrace();
}
finally {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
} // 关闭执行通道
if(pstm !=null) {
try {
pstm.close();
} catch (SQLException e) {
e.printStackTrace();
}
} // 关闭连接通道
try {
if(con != null &&(!con.isClosed())) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
} if(flag) {
System.out.println("执行成功!");
} else {
System.out.println("执行失败!");
}
}
}

   4、ResultSet接口的getXxx 方法

  5、JDBC日期时间处理
    对于数据库种不同的时间类型,要分别采用与之相对应的Java
    (1)包装类来存取:
      日期类型用java.sql.Date
      时间类型用java.sql.Time
      日期/时间类型用java.sql.Timestamp;
      getTimestamp()可以把年月日时分秒都取出来,getDate()只能取出年月日,getTime()只能取出时分秒。
    (2)JDBC的日期/时间类型转换为字符串
      Timestamp timeStamp = //通过数据库访问获取到该数据
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      String str = sdf.format(timeStamp);

    (3)java.sql.Timestamp如何转换为java.util.Date
      java.sql.Timestamp是java.util.Date的子类,不需要做任何转换直接赋值即可:
        java.sql.Timestamp ts;
        java.util.Date utilDate;
        utilDate = ts;
        java.util.Date如何转换为java.sql.Timestamp
      java.util.Date是java.sql.Timestamp的父类,要这样转换:
        java.sql.Timestamp ts;
        java.util.Date utilDate;
        ts.setTime(utilDate.getTime());

  6、JDBC API:
    DriverManager
    Connection
    Statement
    ResultSet
    SQLException

JDBC与Java数据库编程基础的更多相关文章

  1. JDBC与JAVA数据库编程

    一.JDBC的概念 1. JDBC (Java DataBase Connectivity) Java数据库连接 a) 主要提供java数据库应用程序的API支持 2. JDBC的主要功能 a) 创建 ...

  2. 菜鸡的Java笔记 java数据库编程(JDBC)

    java数据库编程(JDBC)        介绍 JDBC 的基本功能            content (内容)        现在几乎所有的项目开发过程之中都不可能离开数据库,所以在java ...

  3. java面向对象下:Java数据库编程

    19.Java数据库编程: JDBC概述:        JDBC(Java Database Connection)是java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类 ...

  4. java数据库编程——读写LOB、可滚动和可更新的结果集、元数据

    java 数据库编程 1. 读写LOB 除了数字.字符串和日期之外,许多数据库还可以存储大对象,例如图片或其它数据.在SQL中,二进制大对象称为BLOB,字符型大对象称为CLOB. 要读取LOB,需要 ...

  5. 如何夯实(Java)编程基础,并深入学习和提高

    如何夯实(Java)编程基础,并深入学习和提高? 240赞同反对,不会显示你的姓名 匿名用户 240 人赞同 多学习...网上自学的学习网站很多,见以下榜单~一.汇总榜单: 公开课_学习网站导航 收录 ...

  6. Java面向对象编程基础

    一.Java面向对象编程基础 1.什么是对象?Object 什么都是对象! 只要是客观存在的具体事物,都是对象(汽车.小强.事件.任务.按钮.字体) 2.为什么需要面向对象? 面向对象能够像分析现实生 ...

  7. Java网络编程基础(Netty预备知识)

    今天在家休息,闲来无事,写篇博客,陶冶下情操~~~ =================我是分割线================ 最近在重新学习Java网络编程基础,以便后续进行Netty的学习. 整 ...

  8. Vc数据库编程基础MySql数据库的表查询功能

    Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ...

  9. Vc数据库编程基础MySql数据库的表增删改查数据

    Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...

随机推荐

  1. mysql实现‘主从复制’

    mysql主从复制(超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 首先准备多台服务器,其中一台作为主服务器,从服务器数量自定. 1.主从服务器分别作以下操作: 主服务器 ...

  2. selenium借助send_keys实现上传(以网易邮箱为例)

    #code:utf-8from selenium import webdriverimport time#网易163邮箱dr = webdriver.Firefox()file_path = 'htt ...

  3. [零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置

    转自:http://redking.blog.51cto.com/27212/114976 重点要会以下两个方面: 1. 抽象类与接口 2. API==>类集 这是两个最重要部分,这两个部分理解 ...

  4. nefu 628 Garden visiting

    //yy:想到昨天一个神题整了几个小时,最后按题解把p拆了用孙子定理..今天这个简单,把C暴力拆了.. 题目链接:nefu 628 Garden visiting 1 <= n, m, p &l ...

  5. 打印出类所在的jar包

    ackage time; /** * Created by sheting on 10/20/2017 */ public class Test { public static void main(S ...

  6. 请求是如何传递给StandardEngine的?

    将请求的传递过程分解学习. CoyoteAdapter将中持有Connector的引用,所以在Coyote这个类中Connector查找它所属的StandardService,而StandardSer ...

  7. android之对于view的一点深入理解

    最近在写程序中,遇到了之前自己没遇到过的代码,一番理解后才知道原来是在动态设定xml布局中的属性.即利用LayoutParams可以动态的设定布局或者控件的宽和高,以及的它的左间距,右间距,内间距,和 ...

  8. html style标签

    <div id="d1">或者<div class="d1">在css下定义id的函数前缀是#,定义class前缀是.css代码就可以这 ...

  9. 为GRIDVIEW“删除”列添加确认对话框

    如何为gridview控件里的“删除”列添加一个确认对话框?网上众说纷纭,大致见到了三种解决方案,现归纳如下:1.继承Web.IO里的button控件,为其实现一个IPostback的接口用于回调,具 ...

  10. 【题解】洛谷P1311 [NOIP2011TG] 选择客栈(递推)

    题目来源:洛谷P1311 思路 纯暴力明显过不了这道题 所以我们要考虑如何优化到至多只能到nlogn 但是我们发现可以更优到O(n) 我们假设我们当前寻找的是第二个人住的客栈i 那么第一个人住的客栈肯 ...