码迷,mamicode.com
首页 > 数据库 > 详细

JDBC学习随笔

时间:2015-11-17 21:58:25      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:

-------------------------------------------------------------------------------------------------------------------------

 概念

JDBC  Java Database Connectivity   提供Java访问各种数据库的API。  然后由这个数据库厂商来完成这些借口。

JDBC API中的几个重要的接口

DriverManger  我们要连接一个或N个数据库,DriverManger就是管理就一个或多个数据库用的,我们要什么连接,就从它这取就行了

Connection     提供了与数据库交互的方法(自我理解,向DriverManger索要的一个连接)

Statement  提供了与SQL相关的操作(自我理解,就是用来操作SQL语句的)

ResultSet   提供了SQL返回结果集的操作(SQL语句执行的结果。)

SQLException 处理在上面几个操作中的异常。

概念总觉得很难理解。我是这么理解,不对的地方请大家指出

数据库在对面,中间有条河,我要操作数据库,分为几个步骤

1.我需要连接数据库,我先问问数据库怎么连接你。然后数据库给我个驱动。

2.MangerDriver爸爸告诉我怎么修,然后我修好这个通道。

3.桥修好了找个对象就可以和数据库进行操作了。

4.对象取来了我执行数据库操作结果

-------------------------------------------------------------------------------------------------------------------------

变成代码

1 //注册驱动
2 Class.forName("oracle.jdbc.driver.OracleDriver");
3 //建立简介
4 Connectoin connection = DriverManger.getConnecton("jdbc:oracle.thin://192.168.93.93:1521/orcl");
5 //获取操作sql的对象
6 Statement  statement = connection.createStatement();
7 //执行sql语句
8 ResultSet resultSet = statament.executeUpdate(sql);

-------------------------------------------------------------------------------------------------------------------------

主要方法

1.注册驱动

DriverManager.registerDriver(new DriverManager.registerDriver());不推荐使用这种方式来加载驱动
        
Class.forName("oracle.jdbc.driver.OracleDriver");

2.Connection可以通过俩个累获得 

--DriverManger   在Java.sql   这个连接底层拿到连接 

--DataSource     在Javax.sql  这个容器封装成数据源,然后获取连接。访问量大的时候最好用这个(其实我也不知道 我看网上查的,最后试试)

3.Statement preparedStatement  CallableStatement 

第三个继承第二个 第二个继承第一个

Statement  提供最基本的sql操作 适合静态的sql语句,且传入的sql语句无法接受参数

preparedStatement   可以在sql中传递参数 适合多次使用sql语句,可以防止SQL注入

CallableStatement  可以调用pl/sql 存储过程

//url  三种格式
String url = null ;
//1
url = jdbc:oracle:thin:@//<host>:<port>/<service_name> ; //推荐//2 
url  =jdbc:oracle:thin:@<host>:<port>:<SID>;//3 
url  =jdbc:oracle:thin:@<TNSName>;
//方法
//如果有result 返回为true,否则为flase,一般用于drop alter create
boolean execute(String SQL)
//返回影响的行数,一般用于insert update delete 
int executeUpdate(String SQL)
//返回一个结果集result 一般用于查询select
ResultSet executeQuery(String SQL

 

步骤 创建对象  执行sql语句  关闭statement

4.ResultSet

当对数据库进行查询操作的时候, 数据库返回的数据通过 ResultSet 接口获取. ResultSet 内部管理了一个 cursor(游标), cursor 指向当前要读的数据,

ResultSet 提供了以下三类接口:

游标移动接口, 用来操作移动游标.

获取数据接口, 用来从当前游标指向位置的数据

更新数据接口, 用来更新当前游标指向位置的数据, 并可以更改对应数据库中的数据.

 

-------------------------------------------------------------------------------------------------------------------------

 

 案例  从一张表中读取数据  

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import oracle.jdbc.driver.OracleDriver;


public class JDBCDemo {

    public static void main(String[] args) {
        // 
        Connection connection = null;
        Statement  statement  = null;
        ResultSet  resultSet  = null;
        String url      = "jdbc:oracle:thin:@//192.168.93.93:1521/center";
        String user     = "ghast";            
        String password = "7654123";
        
        try {
            //1.注册驱动 - -
            Class.forName("oracle.jdbc.driver.OracleDriver");
            //2.获取与数据库的连接
            connection = DriverManager.getConnection(url, user, password);
            //3.得要操作sql的对象
            statement = connection.createStatement();
            //4.得sql语句结果集
            resultSet = statement.executeQuery("select * from user1");
            //5.获取查询结果
            while(resultSet.next()){
                System.out.println(resultSet.getObject("id"));
                System.out.println(resultSet.getObject("name"));
                System.out.println(resultSet.getObject("password"));
                System.out.println(resultSet.getObject("birthday"));
                System.out.println(resultSet.getObject("age"));
            }
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            // 听别人说要关闭它们
        } finally{
            try { 
                if(connection != null){
                    connection.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
                connection = null;
            try { 
                if(statement != null){
                    statement.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
                statement = null;
                try { 
                    if(resultSet != null){
                        resultSet.close();
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } 
                    resultSet = null;
                
            
        }
        

    }

}

 

JDBC学习随笔

标签:

原文地址:http://www.cnblogs.com/creolohpus/p/4972876.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!