JDBC基础(二)

来源:互联网 发布:欣想电子商城项目源码 编辑:程序博客网 时间:2024/05/18 00:19

JDBC基础()

因为是基础篇,所以还是对每一步骤简单说明一下吧:

    前面说是,注册驱动程序有多方法,Class.forName();是一种显式地加载.当一个驱
动程序类被Classloader装载后,在溶解的过程中,DriverManager会注册这个驱动类的实例.
这个调用是自动发生的,也就是说DriverManager.registerDriver()方法被自动调用了,当然
我们也可以直接调用DriverManager.registerDriver()来注册驱动程序,但是,以我的经验.
MS的浏览中APPLET在调用这个方法时不能成功,也就是说MS在浏览器中内置的JVM对该方法的
实现是无效的.
    另外我们还可以利用系统属性jdbc.drivers来加载多个驱动程序:
System.setProperty(/"jdbc.drivers/",/"driver1:driver2:.....:drivern/");多个驱动程序之
间用/":/"隔开,这样在连结时JDBC会按顺序搜索,直到找到第一个能成功连结指定的URL的驱动
程序.
    在基础篇里我们先不介绍DataSource这些高级特性.

    在成功注册驱动程序后,我们就可以用DriverManager的静态方法getConnection来得
到和数据库连结的引用:
    Connection conn = DriverManager.getConnection(url);
    如果连结是成功的,则返回Connection对象conn,如果为null或抛出异常,则说明没有
和数据库建立连结.
    对于getConnection()方法有三个重载的方法,一种是最简单的只给出数据源即:
getConnection(url),另一种是同时给出一些数据源信息即getConnection(url,Properties),
另外一种就是给出数据源,用户名和密码:getConnection(url,user,passwod),对于数据源信息.
如果我们想在连结时给出更多的信息可以把这些信息压入到一个Properties,当然可以直接压
入用户名密码,别外还可以压入指定字符集,编码方式或默认操作等一些其它信息.
    
    在得到一个连结后,也就是有了和数据库找交道的通道.我们就可以做我们想要的操
作了.
    还是先来介绍一些一般性的操作:
    如果我们要对数据库中的表进行操作,要先缘故绑定一个语句:
    Statement stmt = conn.createStatement();
    然后利用这个语句来执行操作.根本操作目的,可以有两种结果返回,如果执行的查询
操作,返回为结果集ResultSet,如果执行更新操作,则返回操作的记录数int.
    注意,SQL操作严格区分只有两个,一种就是读操作(查询操作),另一种就是写操作(
新操作),所以,create,insert,update,drop,delete等对数据有改写行为的操作都是更新操作.

    ResultSet rs = stmt.executeQuery(/"select * from table where xxxxx/");
    int x = stmt.executeUpdate(/"delete from table where ....../");
    如果你硬要用executeQuery执行一个更新操作是可以的,但不要把它赋给一个句柄,
当然稍微有些经验的程序员是不会这么做的.
    至于对结果集的处理,我们放在下一节讨论,因为它是可操作的可选项,只有查询操作
才返回结果集,对于一次操作过程的完成,一个非常必要的步骤是关闭数据库连结,在你没有了
解更多的JDBC知识这前,你先把这一步骤作为JDBC操作中最最重要的一步,在以后的介绍中我会
不断地提醒你去关闭数据库连结!!!!!!!!!!!

    按上面介绍的步骤,一个完成的例子是这样的:(注意,为了按上面的步骤介绍,这个例
子不是最好的)
    try{
        Class.forName(/"org.gjt.mm.mysql.Driver/");
    }catch(Exception e){
        System.out.println(/"没有成功加载驱动程序:/"+e.toString());
        return;
    }//对于象我这样的经验,可以直接从e.toString()的简单的几个字判断出异常原因,
     //如果你是一个新手应该选捕获它的子类,如何知道要捕获哪几个异常呢?一个简单
     //的方法就是先不加try{},直接Class.forName(/"org.gjt.mm.mysql.Driver/");,
     //译器就会告诉你要你捕获哪几个异常了,当然这是偷机取巧的方法,最好还是自己
     //去看JDK文档,它会告诉你每个方法有哪些异常要你捕获.
    Connection conn = null;
    try{
        conn = DriverManager.getConnection(
                        /"jdbc:mysql://host:3306/mysql/",
                        /"user/",
                        /"passwd/");
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery(/"select * from table/");
        //rs 处理
        [rs.close();]
        [stmt.close();]
    }
    catch(Exception e){
        System.out.println(/"数据库操作出现异常:/"+e.toString());
    }
    finally{
        try{conn.close();}catch(Exception){}
    }//不管你以前是学习到的关于数据库流程是如何操作的,如果你相信我,从现在开始,
     //请你一定要把数据库关闭的代码写到finally块中,切切

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 老师对孩子太苛刻该怎么办 孩子不敢上学怕老师该怎么办 学生上课迟到老师该怎么办 看守所转监狱不收怎么办 己判实刑有病看守所不收怎么办 判决书生效前看守所不收怎么办 法院判实刑看守所不收怎么办 派出所立案后送拘留所了怎么办 打架斗殴被关在看守所了怎么办 在看守所羁押期间患癌症怎么办 无法偿还借款拘留15天后怎么办 离婚起诉被告人被羁押怎么办 事实不清的案件怎么办 交通事故没时间去做笔录怎么办 偷东西被拘留家长该怎么办 在香港被拘留了怎么办 发票认证机卡了怎么办 交罚款的单子丢了怎么办 父亲行政拘留考警察政审不过怎么办 非法经营罪立案后不批刑拘怎么办 12分扣完了怎么办2018 驾驶证c1扣14分怎么办 车辆被扣12分怎么办 两个违章扣12分怎么办 车辆违章扣12分怎么办 一下扣了20分怎么办 违章扣了100多分怎么办 车子累计扣12分怎么办 起诉了对方不来怎么办 在监狱里被打伤了怎么办 初三要体检没去怎么办 羁押人在看守所没判刑怎么办? 在看守所关两年了还没有判刑怎么办 开麻将馆被拘留怎么办 拘留31天了我该怎么办 收到一封拘留信怎么办 存钱的收据掉了怎么办 行政拘留法制没有批的怎么办 别人起诉我我该怎么办 去钟落潭看守所送衣服要怎么办 长城宽带账号密码忘了怎么办