Java——JDBC小结

---恢复内容开始---

1.首先说明什么是JDBC
在第一眼看到这个名词之前,我觉得有必要知道它的英文全称是什么,Java Database Connectivity,从英文字面上理解就直译为
可连通的Java数据库,说白了也就是想提供一套中间环节,去连接Java代码与数据库,使之可以直接通过操作Java代码就可以控制数据库。

2.JDBC的实质
它是Java访问数据库的解决方案,希望能过用同样的方式访问不同的数据库,以达到实现与具体数据库无关的Java操作界面。
JDBC实质上就是就是一套标准化的接口,不同的数据库厂商根据自己的数据库特点去实现这套接口,实现的具体方法无需我们去关心。

JDBC中数据库厂商实现的主要接口如下:

DriverManager :驱动管理

Connection、
DatabaseMetaData :连接接口

Statement、
PreparedStatement
CallableStatement: 语句对象接口

ResultSet、
ResultSetMetaData: 结果集接口

3.JDBC的工作原理
程序员调用的是底层数据库厂商实现的部分,
即:1)通过Connection 接口实现第一步的连接
2)通过Statement结果传送sql语句
3)数据库返回结果保存到ResultSet结果集合接口中
主要流程可归纳为:

1)加载驱动,创建连接

2)创建语句对象

3)执行SQL语句

4)发回结果集

5)关闭连接

下面我以我学的oracle数据库配合eclips为例逐步阐述一下如何实现JDBC

1)加载驱动

使用的方法为:Class.forName(“驱动”);

对于如何获得到这个驱动,我所知道的方法是:展开JDBC的jar包,如我使用的是ojdbc6.jar,在里面找到oracle.jdbc.driver,在里面再找到OracleDriver然后鼠标右键点qualitycopy,粘贴到引号之中即可,如:Class.forName("oracle.jdbc.driver.OracleDriver");

2)创建连接

使用的方法为: conn=DriverManager.getConnection(“jdbc:oracle:thin:@IP地址:1521:orcl","数据库账号","数据库密码”);

如:conn=DriverManager.getConnection("jdbc:oracle:thin:@172.16.3.8:1521:orcl","jsd1601","jsd1601");

3)创建语句对象

使用的方法为:Statement stmt=conn.createStatement();

需要注意的是,使用的是第二步上面创建出来的连接去调用方法

调用executeUpdate方法将sql语句传入其中即可执行所写的sql语句,这里需要注意的是,executeUpdate方法能执行的sql种类为insert,update,delete

如:      Statement stmt=conn.createStatement();
            String sql="insert into emp_jiawenzhe(empno,ename,sal,deptno) values(1000,‘贾文哲‘,1500,10)";
            int i=stmt.executeUpdate(sql);

这里面的返回值i就是受影响的行数,我们可以根据这个受影响的行数来判断是否操作成功

4)而对于返回的结果集主要是指进行select操作(这里暂不提)

5)最后关闭连接

如:conn.close();

列举一整体代码,包括注释:

 1 package jdbc_day01;
 2 import java.sql.*;
 3 /**
 4  * 演示JDBC的操作步骤
 5  * 1、加载驱动程序
 6  * 2、创建连接
 7  * 3、创建语句对象
 8  * 4、发送SQL语句
 9  * 5、如果发送的是select语句,处理结果集
10  * 6、关闭连接
11  * @author jiawenzhe
12  *
13  */
14 public class JDBCDome01 {
15     public static void main(String[] args) throws SQLException {
16         //需求:创建一个员工,员工号,员工名,工资,部门号
17         //1、
18         Connection conn=null;
19         try {
20             Class.forName("oracle.jdbc.driver.OracleDriver");
21             System.out.println("驱动加载成功");
22             //2、
23              conn=
24     DriverManager.getConnection("jdbc:oracle:thin:@172.16.3.8:1521:orcl","jsd1601","jsd1601");
25             System.out.println(conn.getClass().getName());
26             //3、
27             //Statment 语句对象。发送并执行SQL语句
28             /*
29              * int excuteUpdate(String sql);
30              * 发送insert,update,delete语句
31              * 返回值int表示影响数据库表的行数
32              */
33             Statement stmt=conn.createStatement();
34             String sql="insert into emp_jiawenzhe(empno,ename,sal,deptno) "
35                     + "values(1000,‘王小二‘,1500,10)";
36             int i=stmt.executeUpdate(sql);
37             if(i>0){
38                 System.out.println("保存成功!");
39             }
40         } catch (ClassNotFoundException e) {
41             e.printStackTrace();
42             //1、记录日志
43             //2、通知调用者
44             throw new RuntimeException("加载驱动错误",e);
45         }finally{
46             //关闭连接
47             if(conn!=null){
48                 try {
49                     conn.close();
50                 } catch (SQLException e) {
51                     e.printStackTrace();
52                 }
53             }
54         }
55
56
57
58
59     }
60 }
注:oracle数据库可以使用的jar包:ojdbc14.jar/ojdbc6.jar(oracle12c用这个)

mysql数据库可以使用的jar包:mysql-connector-java-5.0.4-bin.jar

加载驱动类:

Class.forName("com.mysql.jdbc.Driver");

未完待续!

---恢复内容结束---

时间: 2024-10-13 22:27:58

Java——JDBC小结的相关文章

Java——JDBC小结终结

在JDBC的最后一个内容中,我将叙述的是最后一个概念DAO 1.DAO DAO(Data Access Object)数据访问对象,他是建立在业务层与数据库之间,目的就是为了分开数据访问逻辑和业务逻辑 接下来我直接说明关于DAO的建立,首先要先创建一个实体类,并对其进行序列化,实体类里面包含的是数据表的各个字段,同时要包含他们各自的get,set方法,示例代码如下: 1 package entity; 2 3 import java.io.Serializable; 4 import java.

Java——JDBC小结(4)

在前面的关于JDBC的叙述中,着重说明了工具类的创建办法,接下来我将就我之前没有提到的查询的方式加以说明,在说明查询之前我先引出一个新的概念就是结果集这个类,及他的相关的一些方法 1.结果集 之前有提到过发送SQL的Statement这个类,他的主要作用就是发送SQL到数据库,对于增,删,改,使用的方法是Statement.executeUpdata();注意他的返回值是一个整形,也就是返回的是数据库受影响的行数,而在进行查找的SQL时,要调用的方法是Statement.executeQuery

Java——JDBC小结(2)

1.封装方法的引出 学了一段时间的Java给我感触最深的就是,当前写某一系列的代码的时候,如果出现了代码的复用,肯定会选择一种方法对代码进行一定程度的封装,从封装一个方法到封装一个类,之前有提到的使用JDBC进行数据库的操作(增,删,改,因为查询涉及到对结果集的操作,将单独声明)分为四个过程: 1)加载驱动 2)创建连接 3)创建语句对象,发送SQL 4)关闭连接 也就是说我们在进行任何对数据库操作的时候,都要进行上述步骤,这便出现了代码的冗余,于是便提出了封装这些共性的步骤到一个类中,使其能成

Java——JDBC小结(3)

1.连接池技术的引出 上面我已经阐述了将JDBC封装成了很好用的工具类,其实对于个人封装性已经是很好的了,但是通常我么应该考虑到我们每次在执行一条SQL句时,都要对数据库进行连接,与关闭,这极大的消耗了数据库的资源,为了解决这个问题,提出了连接池技术.这里我想说一下,以我目前学到的知识来看,每次出现池这个概念的时候一定是要提高系统效率的,比如说线程池. 连接池技术就是系统在开始的时候先主动地建立若干个连接,当有用户要进行SQL操作的时候,系统会分配给当前用户一个连接,用户在使用这个连接完毕后,不

Java——JDBC小结(5)

1.事物 关于事物的概念及原理有好多好多,但我的理解就是一句话,要保持一个整体性,就是一个事,要分成几个步骤去完成,但是只有这几个步骤都做完了才是一个完整的事.这里面最简单的示例就是模拟银行的取款与存款了,我直接给出这个示例代码然后加以分析 1 @Test 2 public void test2(){ 3 String payId="00001"; 4 String recId="00002"; 5 double mny=1000; 6 Connection con

Java JDBC高级特性

1.JDBC批处理 实际开发中需要向数据库发送多条SQL语句,这时,如果逐条执行SQL语句,效率会很低,因此可以使用JDBC提供的批处理机制.Statement和PreparedStatemen都实现了批处理.测试表结构如下: Statement批处理程序示例 1 package server; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 impor

Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 及sql2008外围服务器

转载:Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 错误原因如下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConver

java枚举小结

在百度百科上是这样介绍枚举的: 在C#或C++,java等一些计算机编程语言中,枚举类型是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中,它是一种构造数据类型.枚举类型用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型. 而在java中,枚举扩大了这一概念,因为在java中,枚举已经称为一个类,因此完全具有类的特性. 我们都知道枚举是JDK1.5才推出的新概念,那么在此之前,我们如果想使用一些固定的常量集合,比如性别(2个),季节(4个),星期(7个)

java加密算法小结(2)--MD5加密算法

上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇来整理一下一个被广泛应用的加密算法---MD5. 简单了解 MD5(Message Digest Algorithm 5),翻译过来是消息摘要算法第五版,按照惯例,我们推理可能也有MD2,MD3这样名字的历史版本.. 即使完全不了解这个算法的原理,我们也可以从命名中看出一些眉道,所谓摘要,就是一个简短的概括,像我写过的毕业论文,上来第一部分就是摘要,它对后面长篇大论的文章做了一个简短有力的概