jdbc(上)

 理解JDBC的设计思路,设计理念
   sun公司提供访问各种关系型数据库的一套JDBC API和一个规范,有数据库厂商提供实现JDBC Driver API 的底层实现代码。在JDBC API中包含了两部分,一部分是供驱动开发人员去实现的接口,还有一部分是供应用程序员调用的API,程序员编写代码时是针对JDBC API的,而不是针对数据库厂商的实现。

l. 连接到数据库的方法
答:1) ODBC(Open Database Connectivity)
       一个以C语言为基础访问SQL为基础数据库引擎的接口,它提供了一致的接口用于和数据库沟通以及访问数据。
       2) JDBC
       Java版本的ODBC

2. JDBC Driver的四种类型
答:1) JDBC-ODBC桥
    由ODBC驱动提供JDBC访问
       2) 本地API
    部分Java driver把JDBC调用转化成本地的客户端API
       3) JDBC-net
    纯的Java driver,将JDBC调用转入DBMS,与网络协议无关。然后通过服务器将调用转为DBMS协议。
       4) 本地协议
    纯的java driver,将JDBC调用直接转为DBMS使用的网络协议

3 javax.sql包JDBC2.0的增强功能
答:1) 数据源接口;
        2) 连接池;
       3) 分布式交易;
       4) 行集;

4 使用JDBC编写数据库应用程序的步骤。

//1. 注册驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2. 获取数据库连接
 Connection  conn = DriverManager.getConnection(”jdbc:oracle:thin:@192.168.0.20:1521:tarena","openlab","open123");
//3. 创建Statement
Statement stm = conn.createStatement();
 
//4. 执行SQL语句
String sql = "select name,classId,age from sd0612_stu";
ResultSet rs 
= stm.executeQuery(sql);
//5. 如果有结果集,处理结果集
。。。。
//6. 关闭连接,释放资源(逆序关掉)
stm.close();
conn.close();

5 注册驱动的三种方式

1 通过上面的方式:Class.forName("oracle.jdbc.driver.OracleDriver");
2通过命令行:Class.forName(arg[
0]);
3通过系统:java 
-jdbc .dirver=oracle.jdbc.driver.OracleDriver;

6 获取数据库连接的三个方法

1)通过普通方式:conn = DriverManager.getConnection"jdbc:oracle:thin:@192.168.0.20:1521:db_name","****","***");
2)通过参数:conn = DriverManager.getConnection (arg[1],arg[2],arg[3]);
3)通过Properties类获得
Properties pro 
= new Properties();    
 pro.setProperty(
"user","openlab");
 pro.setProperty(
"password","open123");
 conn 
= DriverManager.getConnection(arg[1],pro);
注:只有Oracle才有这样的方式
conn = DriverManager.getConnection("jdbc:oracle:thin:openlab/open123@192.168.0.20:1521:db_name");

7.  创建一个Statement(步骤三)
答:1) Statement的三个接口:
       a. Statement;
       b. PreparedStatement(继承自Statement);
       c. CallableStatement(继承自PreparedStatement);
    2) 使用方法Connection.createStatement()得到一个Statement对象

8 PreparedStatement对象
答:1) 调用ProparedStatement比statement更为高效;
    2) 继承自Statement;
    3) 语法:PreparedStatement pstm = connection.prepareStatement(sqlString);

9. CallableStatement对象
答:1) 通过CallableStatement调用数据库中的存储过程;
    2) 继承自PreparedStatement;
    3) CallableStatement cstm = connection.prepareCall("{call return_student[?,?]}");
       cstm.setString(1,"8623034");
       cstm.registerOutparameter(2, Types.REAL);
       cstm.execute();
       float gpa = cstm.getFloat(2);

10. Statement接口的比较
答:                   | Statement           | PreparedStatement         |  CallableStatement
    ------------------------------------------------------------------------------
    写代码位置   |   客户端            | 客户端                    |  服务器端
    ------------------------------------------------------------------------------
    写代码位置   |   客户端            | 服务器端                  |  服务器端
    ------------------------------------------------------------------------------
    编写代码技术 |Java,SQL操作        |Java,SQL操作              |  数据库的程序语言,如PL/SQL
    ------------------------------------------------------------------------------
    可配置性     |   高                |第一次高,以后低           |  低
    ------------------------------------------------------------------------------
    可移植性     |   高                |假设支持PreparedStatement的话高 
    ------------------------------------------------------------------------------
    传输效率     |   低                |第一次低,以后高           |  高

11. SQL数据类型及其相应的Java数据类型
答:SQL数据类型                     Java数据类型              说明
    ------------------------------------------------------------------
    INTEGER或者INT                  int                     通常是个32位整数
    SMALLINT                        short                   通常是个16位整数
    NUMBER(m,n) DECIMAL(m,n)        Java.sql.Numeric        合计位数是m的定点十进制数,小数后面有n位数
    DEC(m,n)                        Java.sql.Numeric        合计位数是m的定点十进制数,小数后面有n位数
    FLOAT(n)                        double                  运算精度为n位二进制数的浮点数
    REAL                            float                   通常是32位浮点数
    DOUBLE                          double                  通常是64位浮点数
    CHARACTER(n)或CHAR(n)           String                  长度为n的固定长度字符串
    VARCHAR(n)                      String                  最大长度为n的可变长度字符串
    BOOLEAN                         boolean                 布尔值
    DATE                            Java.sql.Date           根据具体设备而实现的日历日期
    TIME                            Java.sql.Time           根据具体设备而实现的时戳
    TIMESTAMP                       Java.sql.Timestamp      根据具体设备而实现的当日日期和时间
    BLOB                            Java.sql.Blob           二进制大型对象
    CLOB                            Java.sql.Clob           字符大型对象
    ARRAY                           Java.sql.Array

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值