华恩JAVA班第64天

来源:互联网 发布:网络贷款平台哪个靠谱 编辑:程序博客网 时间:2024/06/05 03:42

华恩JAVA班第64天

 

什么是JDBC?

Java语言访问数据库的一种规范,是一套API

JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库。比如建立数据库连接、执行SQL语句进行数据的存取操作。

 

  JDBC规范采用接口和实现分离的思想设计了Java数据库编程的框架。接口包含在java.sqljavax.sql包中,其中java.sql属于JavaSEjavax.sql属于JavaEE。这些接口的实现类叫做数据库驱动程序,由数据库的厂商或其它的厂商或个人提供。

 

   为了使客户端程序独立于特定的数据库驱动程序,JDBC规范建议开发者使用基于接口的编程方式,即尽量使应用仅依赖java.sqljavax.sql中的接口和类。

 

JDBC驱动程序:

什么是JDBC驱动程序?

这些是各个数据库厂家根据JDBC的规范制作的JDBC实现类

JDBC驱动程序的四种类型:

1.       第一种类型的驱动程序的实现是通过将JDBC的调用全部委托给其它编程接口来实现的,比如ODBC。这种类型的驱动程序需要安装本地代码库,即依赖于本地的程序,所以便携性较差。比如JDBC-ODBC桥驱动程序

2.       第二种类型的驱动程序的实现是部分基于Java语言的。即该驱动程序一部分是用Java语言编写,其它部分委托本地的数据库的客户端代码来实现。同类型1的驱动一样,该类型的驱动程序也依赖本地的程序,所以便携性较差

3.       第三种类型的驱动程序的实现是全部基于JAVA语言的。该类型的驱动程序通常由某个中间件服务器提供,这样客户端程序可以使用数据库无关的协议和中间件服务器进行通信,中间件服务器再将客户端的JDBC调用转发给数据库进行处理

4.       第四种类型的驱动程序的实现是全部基于JAVA语言的。该类型的驱动程序中包含了特定数据库的访问协议,使得客户端可以直接和数据库进行通信

 

JDBC类结构:

                           DriverManager

 

Driver                               Driver

 

Connection                         Connection

 

Statement                                  Statement

 

Resultset                                    Resultset

 

DriverManager:这个是一个实现类,它是一个工厂类,用来生产Driver对象的

这个类的结构设计模式为工厂方法

Driver:这是驱动程序对象的接口,它指向一个实实在在的数据库驱动程序对象,那么这个数据库驱动程序对象是从哪里来的呢?

DriverManager工厂中有个方法:getDriver(StringURL),通过这个方法可以得到驱动程序对象,这个方法是在各个数据库厂商按JDBC规范设计的数据库驱动程序包里的类中静态实现的,也就是在静态块中

Connection:这个接口可以制向一个数据库连接对象,那么如何得到这个连接对象呢?

是通过DriverManager工厂中的getConnection(StringURL)方法得到的

Statement:用于执行静态的SQL语句的接口,通过Connection中的createStatement方法得到的

Resultset:用于指向结果集对象的接口,结果集对象是通过Statement中的execute等方法得到的

 

JAVA使用JDBC访问数据库的步骤:

1.     得到数据库驱动程序

2.     创建数据库连接

3.     执行SQL语句

4.     得到结果集

5.     对结果集做相应的处理(,,,)

6.     关闭资源:这里释放的是DB中的资源

 

  

设置classpath:

1.     java文件中起的包名一定要是工程基目录下的子目录,classpath:基目录

2.     .jar,需要将这个.jar包的路径包括这个文件的全名添加到classpath中来

Oracle连接字符串的书写格式:

“oracle:jdbc:thin:@ip:1521: 数据库名”,”数据库用户名”,”数据库密码

 

简单的例子:

package moudule1.first;

 

import java.sql.*;

 

public class FirstJdbc

{

     public static void main(String[]args)

     {

                String sql="select * fromyuchen_user";

                Connection con=null;

                Statement st=null;

                ResultSet rs=null;

                

      try

      

                Class.forName("oracle.jdbc.driver.OracleDriver");

                con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:name","scott","tiger");

                st=con.createStatement();

                rs=st.executeQuery(sql);

                while(rs.next())

                {

                           System.out.println(rs.getInt("id"));

                           System.out.println(rs.getString("name"));

                }

      }catch(Exceptione)

      {

               e.printStackTrace();

      }finally

      {

               try

               {

                    con.close();

               }catch(Exception e)

               {}

               

               try

               {

                    st.close();

               }catch(Exception e)

               {

               }

               

               try

               {

                    rs.close();

               }catch(Exception e)

               {

               }

                     

      }

 

                

     }

     

}

 

 

常用数据库的驱动程序及JDBCURL:

 

 MySQL数据库

   驱动程序包名:mysql-connector-java-3.1.11-bin.jar

   驱动类的名字:com.mysql.jdbc.Driver

   JDBCURLjdbc:mysql://dbip:port/databasename

   说明:驱动程序包名有可能会变

       JDBC URL中黑色字体部分必须原封不动的保留,为该驱动识别的URL格式。红色字体部需要根据数据库的安装情况填写。其中各个部分含义如下:

       dbip 为数据库服务器的IP地址,如果是本地可写:localhost127.0.0.1

       port 为数据库的监听端口,需要看安装时的配置,缺省为3306

       databasename –数据库的名字。

        举例如果要访问本地的数据库allandb,端口1433,那么URL写法如下:

      jdbc:mysql://localhost:3306/allandb

   下载地址:http://dev.mysql.com/downloads/connector/j/

 

一些常用的方法:

 

package moudule1.fangfa;

 

import java.sql.*;

import moudule1.com.*;

 

public classsqlExecutor{

     

     public static void main(String[]args){

          

          Connection con=null;

          Statement st=null;

          

          try{

                

                con=JdbcUtil.getConnection();

                st=con.createStatement();

                boolean str=st.execute(args[0]);

                

                if(str){

 

                     ResultSet rs=st.getResultSet();

                     

                     while(rs.next()){

                           System.out.println(rs.getInt("id")+":"+rs.getString("name"));

                           }

                           

                           rs.close();

                     

                }else{

                     int row=st.getUpdateCount();

                     System.out.println(row);

                     }

                

          }catch(Exception e){

                

                e.printStackTrace();

                

          }finally{

                

                JdbcUtil.close(con,st);

                

                }

          }

     }

更多信息可以参见同学富晓磊的博客:http://blog.sina.com.cn/u/1798827371

原创粉丝点击