`

认识JDBC

阅读更多

1what

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。


2why

JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。


3how

简单的例子

package db;  
import java.sql.*;
import com.sun.corba.se.spi.orbutil.fsm.Guard.Result;
class Jdbc2 {  
    public static void main(String[] args) throws Exception {  
        //1.先new 一个driver 然后向managerDriver注册  
        Class.forName("com.mysql.jdbc.Driver");  
        //2.通过DriverManager.getConnection传递个方法,严格的说是jdbc的url  
        Connection conn = DriverManager.getConnection(  
                "jdbc:mysql://localhost:3306/test", "root", "1234");  
        //3.创建个statement对象,执行sql语句  
        Statement stmt = conn.createStatement();  
        ResultSet rs = stmt.executeQuery("select * from test.admin");  
        //4.取得结果集 5.对其进行便利  
        while (rs.next()) {  
            System.out.println(rs.getString("username"));  
            System.out.println(rs.getInt("id"));  
        }  
        //6.关闭(要遵循后执行的先闭,先执行的后闭的原则)  
        rs.close();  
        stmt.close();  
        conn.close();  
    }  
}  
  
/** 
 * 此例子需要注意的是: 
 * 1.驱动是否在lib文件夹下面。 
 * 2.数据库里面的库名以及表是否存在 
 * 3."jdbc:mysql://localhost:3306/test", "root", "1234"); 
 * 分别对应的是地址、端口、库名、数据库的管理员名字、管理员密码。 
 * 4."select * from test.admin" sql语句建议一定写的时候用 库名.表名。 
 */  
/* 


详解的例子

1 注册一个driver
注册驱动程序有三种方式:
ojdbc14.jar
方式一:Class.forName(“oracle.jdbc.driver.OracleDriver”);
JAVA规范中明确规定:所有的驱动程序必须在静态初始化代码块中将驱动注册到驱动程序管理器中。

方式二:Driver drv = new oracle.jdbc.driver.OracleDriver();
        DriverManager.registerDriver(drv);

方式三:编译时在虚拟机中加载驱动
javac –Djdbc.drivers = oracle.jdbc.driver.OracleDriver xxx.java
java –D jdbc.drivers=驱动全名类名

使用系统属性名,加载驱动 -D表示为系统属性赋值
附 : mysql的Driver的全名com.mysql.jdbc.Driver
     SQLServer的Driver的全名com.microsoft.jdbc.sqlserver.SQLServerDriver

2建立连接
conn=DriverManager.getConnection(“jdbc:oracle:thin:@192.168.0.20:1521:tarena”, ” User”,” Pasword”);

Oracle子协议
Connection连接是通过DriverManager的静态方法getConnection(.....)来得到的,这个方法的实质是把
参数传到实际的Driver中的connect()方法中来获得数据库连接的。

Oracle URL的格式:
jdbc:oracle:thin:(协议)@XXX.XXX.X.XXX:XXXX(IP地址及端口号):XXXXXXX(所使用的库名)
MySql URL的写法 例: jdbc:mysql://192.168.8.21:3306/test

3 获得一个Statement对象
sta = conn.createStatement();

4 通过Statement执行Sql语句
sta.executeQuery(String sql);返回一个查询结果集。
sta.executeUpdate(String sql);返回值为int型,表示影响记录的条数。
将sql语句通过连接发送到数据库中执行,以实现对数据库的操作。

5 处理结果集
        使用Connection对象获得一个Statement,Statement中的executeQuery(String sql) 方法可以
使用select语句查询,并且返回一个结果集 ResultSet通过遍历这个结果集,可以获得select语句的查寻
结果,ResultSet的next()方法会操作一个游标从第一条记录的前面开始读取,直到最后一条记录。
executeUpdate(String sql) 方法用于执行DDL和DML语句,比如可以update,delete操作。
只有执行select语句才有结果集返回。

例: 
Statement str=con.createStatement(); //创建Statement
String sql=”insert into test(id,name) values(1,”+”’”+”test”+”’”+”)”;
str. executeUpdate(sql);             //执行Sql语句
String sql=”select * from test”;
ResultSet rs=str. executeQuery(String sql);//执行Sql语句,执行select语句后有结果集
while(rs.next()){ //遍历处理结果集信息
        System.out.println(rs.getInt(“id”));
        System.out.println(rs.getString(“name”))
        //next()如果有下一条记录返回true,否则为false;有,则游标向下一条记录.
}

6 关闭数据库连接(释放资源) 调用.close()
        rs.close(); 
        sta.close();
        con.close();

ResultSet Statement Connection是依次依赖的。

注意:要按先ResultSet结果集,后Statement,最后Connection的顺序关闭资源,因为Statement和
ResultSet是需要连接时才可以使用的,所以在使用结束之后有可能其它的Statement还需要连接,所以不能现关闭Connection。


 


4jdbc的不足

 尽管JDBC在JAVA语言层面实现了统一,但不同数据库仍旧有许多差异。为了更好地实现跨数据库操作,于是诞生了Hibernate项目,Hibernate是对JDBC的再封装,实现了对数据库操作更宽泛的统一和更好的可移植性。


5jdbc的五个精华功能

          一.批处理:

    1.批处理时即可以用statement ,也可以用preparedstatement,一般可用后者。用后者的特点:

    PreparedStatement  ps = con.prepareStatement(sqlURL+"?,?,?,?,null)");
    ps.addBatch(sqlURL);
    ps.addBatch(sqlURL2);
    ps.addBatch(sqlURL3)
    ps.execute()//是用来执行初始化语句
    ps.executeBatch()//是用来执行ps.addBatch中的语句。

    对于statement也用此特点。但.createStatement不能初始化.但可用stet.updateExecuate(sql) .

    2.批处理有一个完整的sql操作过程的需要。它可以决定操作的回不回退,来确定操作的特征:

    使用批处理是要考虑到异常的后果,是否已经到达操作的目的。

    3.二个表没办法通过sql语句合并,只是select 和 jion能获取一个二个表的结果集合而已。

    唯一的办法:一个个的读取,一个个的insert。

    4.批处理中不能有b/lob类型进行preparedStatement.setC/Blob()。

    二.SQL语句

    1.对于update,insert等都可以用?表示当时未用,然后对其进行setxxx("")即补上.

    2.对于integer类型的字段可以采用自动增长的方式:*声明标的方式如下:

    createURL=CREATE TABLE netPage( orderList INT AUTO_INCREMENT, url VARCHAR(200), title VARCHAR(50),    createTime DATE, file TEXT,PRIMARY key(orderList), KEY(url) )

    注当设定二个KEY值时,数据库先检验第一个key,如果没有相同的就不检验第二个,如果有才检验。只有当某行的二个key都一样时才报错。

    3.当要对表进行清空要用TRUNCATE TABLE netpagebak,如果用delete *的话,就会当表为空时,回报错 。

    4.DELETE netPageBak.* FROM netPageBak,netPage WHERE  netPageBak.url=netPage.url 的意思是:

    从netPageBak中删除含有与netpage中url相同的url行。

    5.在用到数据库的字段是要回避含有:的string作为某一个字段的值。会出异常的(sql语法不对)。

    6.使用RowSet.getString(int),该int从1开始对应相关的列字段。

    三.数据类型

    1.在用到where语句的条件是:=null;将会被认为没有条件一样,即使对应的确实有字段的值为null.一搬在该字段为null时,可用该字段的默认值,或空值。

    2。可用limit语句对检索的行数结果限制。例:

    SELECT * FROM netPage WHERE createTime="" LIMIT 10

    注:LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量(从第几行开始)(可选),第二个参数指定返回记录行的最大数目。这是mysql的使用方法,其他数据库有类似的操作。

    四.异常:

    1。在设计方法来共享同一个connection 时,要注意有关异常产生的情况,可能导致connection没有及时关闭,因此要在每一个异常出现时设置关闭connection

    2.java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.ConnectException: Connection refused: connect
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:1797)
    at com.mysql.jdbc.Connection.<init>(Connection.java:562)

    其异常是由于数据库的连接出问题了。

    五.数据库大对象:

    一.当有大对象的使用:

    1.COLB是代表大的数据(字符型) Blob代表大的二进制数据类型 对于这些大对象而言在初始的时候要付null值否则会出错。

    2.在用到sql语句的时候一定要保证语句的完整性。:

    ◆用逗号表示字段之间的间隔。
    ◆对于含values的语句注意括符的匹配。
    ◆当用字符串表示sql语句是要注意''号来表示字符串。

    例:sqlURL=sqlURL+num+",'"+hsStr+"','"+title+"','"+date.toString()+"',"+null+");";
    注:sql结尾可无;

    3.一般不采用blob,clob,而采用long,long raw的原因是:需要平台的支持。

分享到:
评论

相关推荐

    JDBC 入门教程内含源码以及说明书可以自己运行复现.zip

    认识JDBC** JDBC是Java平台上的一个标准API,由Sun Microsystems开发并被Oracle公司维护,用于在Java程序中与各种类型的数据库进行交互。它提供了一组接口和类,使得开发者能够使用SQL语言进行数据库操作,如查询、...

    JAVA的JDBC详解,面试必问

    通过实例代码,让你认识JDBC,简单实用,面试必问 * Statement是一个接口,它表示语句对象。 * executeQuery():只能执行查询语句(DQL),返回ResultSet对象,即结果集对象。 * executeUpdate():执行DML语句...

    第15天对jdbc的认识和了解jdbc如何操作数据库

    第15天对jdbc的认识和了解jdbc如何操作数据库

    oracle-jdbc官方文档

    通过以上介绍,我们对Oracle JDBC有了更全面的认识,了解了如何安装配置以及使用该技术来开发强大的Java数据库应用程序。此外,还讨论了一些高级特性和常见问题的解决方法,这对于实际应用非常有帮助。

    spring+springMvc+jdbc 简易框架整合

    Spring、SpringMVC和JDBC是Java...通过深入研究和实践这个简易项目,你可以对Spring、SpringMVC和JDBC的整合有一个全面的认识,并为进一步的Java Web开发打下坚实的基础。记得不断优化和改进代码,使其更加健壮和高效。

    webservice+jdbc例子

    【标题】:“webservice+jdbc例子”是一个关于Java EE...对于初学者来说,这个示例将是一个很好的实践机会,帮助他们深入理解Web Service和JDBC在实际开发中的应用,同时也对Java EE项目的完整生命周期有更直观的认识。

    JDBC接口技术

    随着Java语言的普及,SUN公司认识到需要一个专门为Java设计的数据库访问接口,于是JDBC应运而生。在JDK 1.1版本中,JDBC成为Java标准的一部分,使得Java开发者可以使用纯Java代码编写数据库应用程序,充分利用Java的...

    JavaJDBC编程

    通过这个实验,学生不仅能学习到如何使用JDBC API与数据库交互,还能实践SQL语言的实际应用,理解Java接口的概念,同时对数据库管理系统的设计有更深入的认识。在实际开发中,还可能涉及预编译的`PreparedStatement`...

    Java控制台学生信息管理系统(JDBC版)

    **Java控制台学生信息管理系统(JDBC版)详解** 本项目是一个基于Java语言开发的学生信息管理系统,采用经典的Model-View-...通过这个项目,你可以深入理解Java编程,掌握数据库操作技巧,并对软件架构有初步的认识。

    达梦数据库连接方式及jdbc驱动包.rar

    最近数据库要用达梦,个人对达梦又有了新的认识。使用的是达梦7,这个数据库有很多BUG,官方提供的客户端,不仅卡,而且登录了后,使用Java JDBC操作更新时,是会被阻塞的,所以,在使用Java开发达梦应用时候,尽量...

    JDBC连接SQLServer2008.pp

    jabc课件,让我们简单的理解什么是jdbc和一些库函数。让你有大体了解和认识。

    实验5JDBC实验.rar_java jdbc

    这个项目可以帮助你巩固对JDBC的理解,加深对数据库操作流程的认识,并提高实际编程能力。通过这个实验,你可以亲自体验到如何在Java程序中编写SQL语句,以及如何处理返回的结果。同时,这也是一个很好的起点,...

    JDBC编程实例.rar

    **JDBC编程实例详解** ...通过以上讲解,你应该对JDBC编程有了全面的认识,可以参考提供的"Java Database Programming Example Code"进一步学习和实践。记得在编写代码时遵循最佳实践,确保代码的健壮性和效率。

    JDBC数据查询(MySQL)

    ### JDBC数据查询(MySQL)知识点解析 #### 一、JDBC概述 JDBC(Java Database Connectivity)是Java中用来对关系型数据库...通过对这些代码的学习和理解,可以加深对JDBC工作原理的认识,并为实际项目开发提供参考。

    基于JSP+Servlet+JDBC+mysql的图书管理系统源码(课程设计).zip

    通过这个项目对JSP、Servlet、JDBC、mysql数据库等技术有一个初步的认识和理解,同时也希望能够帮助有需要的朋友。 Mysql数据库和服务器 我使用的数据库版本为8.0.15; 服务器为Tocmat9.0.2; 数据表在src/test/...

    JDBC开发必需的三个微软jar包

    首先,我们来认识一下标题中提到的“三个微软jar包”。对于微软的数据库系统,例如SQL Server,开发者通常需要用到以下三个关键的JDBC驱动包: 1. **mssql-jdbc.jar**:这是微软官方提供的JDBC驱动,全称为...

    oracle proxool jar jdbc jar包 proxool源码包 Java oracle proxool 实例

    Oracle Proxool是一款开源的数据库连接池,它提供了一种高效、灵活的方式来管理数据库连接,以提高Java应用程序...同时,通过研究源码,可以进一步提升对数据库连接池工作原理的认识,为日后的开发工作打下坚实的基础。

    Java基础入门自学课件 第15章 JDBC数据库访问(共12页).rar

    本章内容旨在帮助初学者建立起对JDBC的基本认识,并通过实际示例加深理解和应用。通过学习,你应该能够编写简单的Java程序,实现对数据库的基本操作,为进一步深入学习Java数据库编程打下坚实的基础。

    数据库课程作业,基于jsp + jdbc + servlet + javabean的学生管理系统.zip

    首先,我们来认识一下这些核心技术: 1. JSP(JavaServer Pages):JSP是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,从而实现服务器端的业务逻辑处理。在学生管理系统中,JSP主要用于展示数据和接收...

Global site tag (gtag.js) - Google Analytics