??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美精品一区二区三,成人免费黄色网页,国产一区二区三区福利http://www.aygfsteel.com/skylam/zh-cnWed, 18 Jun 2025 09:00:29 GMTWed, 18 Jun 2025 09:00:29 GMT60JDBC基础(一)http://www.aygfsteel.com/skylam/archive/2005/10/21/16316.html大雄大雄Fri, 21 Oct 2005 08:57:00 GMThttp://www.aygfsteel.com/skylam/archive/2005/10/21/16316.htmlhttp://www.aygfsteel.com/skylam/comments/16316.htmlhttp://www.aygfsteel.com/skylam/archive/2005/10/21/16316.html#Feedback0http://www.aygfsteel.com/skylam/comments/commentRss/16316.htmlhttp://www.aygfsteel.com/skylam/services/trackbacks/16316.html
1.通过接口可以实现不相关的cȝ相同行ؓ(f).
2.通过接口可以指明多个c需要实现的Ҏ(gu).
3.通过接口可以了解对象的交互方法而不需要了解对象所对应的类蓝本.


一个普通数据库的连l过Eؓ(f):
    1.加蝲驱动E序.
    2.通过DriverManager到得一个与数据库连l的句柄.
    3.通过q结句柄l定要执行的语句.
    4.接收执行l果.
    5.可选的对结果的处理.
    6.必要的关闭和数据库的q结.

Class.forNameҎ(gu)是先在内存中溶解{֐?org.gjt.mm.mysql.Driver"的Driverc?Drivercd?x)把相应的实现类对应到JDBC API的接口中.注册驱动E序有多Ҏ(gu),Class.forName();是一U显式地加蝲.当一个驱动程序类被Classloader装蝲?在溶解的q程?DriverManager?x)注册这个驱动类的实?q个调用是自动发生的,也就是说DriverManager.registerDriver()Ҏ(gu)被自动调用了

在成功注册驱动程序后,我们可以用DriverManager的静态方法getConnection来得到和数据库连l的引用:
    Connection conn = DriverManager.getConnection(url);
    如果q结是成功的,则返回Connection对象conn,如果为null或抛出异?则说明没?BR>和数据库建立q结.

如果我们要对数据库中的表q行操作,要先~故l定一个语?
    Statement stmt = conn.createStatement();
    然后利用q个语句来执行操?Ҏ(gu)操作目的,可以有两U结果返?如果执行的查?BR>操作,q回为结果集ResultSet,如果执行更新操作,则返回操作的记录数int.
    注意,SQL操作严格区分只有两个,一U就是读操作(查询操作),另一U就是写操作(?BR>新操?,所?create,insert,update,drop,delete{对数据有改写行为的操作都是更新操作.

关于Statement对象:
      前面说过,Statement对象是用来绑定要执行的操作的,在它上面有三U执行方?即用来执行查询操作的executeQuery(),用来执行更新操作的executeUpdate()和用来执行动态的未知的操作的execute().一个Statement对象同时只能有一个结果集在活?q是宽容性的,是说即使没有调用ResultSet的close()Ҏ(gu),只要打开W二个结果集隐含着对上一个结果集的关?所以如果你惛_时对多个l果集操?p创徏多个Statement对象,如果不需要同时操?那么可以在一个Statement对象上须序操作多个结果集

 Statement的两个子c?
    PreparedStatement:对于同一条语句的多次执行,Statement每次都要把SQL语句发送给数据
?q样做效率明显不?而如果数据库支持预编?PreparedStatement可以先把要执行的语句一ơ发
l它,然后每次执行而不必发送相同的语句,效率当然提高
PreparedStatement ps = conn.prepareStatement("select * from ?where 字段=?");
    ps.setString(1,参数);
    ResultSet rs = ps.executeQuery();
   
    CallableStatement:是PreparedStatement的子c?它只是用来执行存储过E的.
    CallableStatement sc = conn.prepareCall("{call query()}");
    ResultSet rs = sc.executeQuery();

ResultSet对象实际l护的是一个二l指?W一l是指向当前?最初它指向的是l果集的W一行之?所以如果要讉KW一?p先next(),以后每一行都要先next()才能讉K,然后W二l的指针指向?只要当你去rs.getXXX(??才通过Connection再去数据库把真实的数据取出来,否则没有什么机器能真的把要取的数据都放在内存中.

如果有记录又不知道是多少?q时如果要对有记录和没有记录q行不同的处?应该用以下流E进行判?

    if(rs.next()){
        //因ؓ(f)已经先next()?所l对记录应该用do{}while();来处?BR>        do{
            int i = rs.getInt(1);
            String a = rs.getString("a2");
        }while(rs.next());
    }
    esle{
        System.out.println("没有取得W合条g的记?");
    }

获取l果集的信息:
    大多数情况下~程人员Ҏ(gu)据库l构是了解的,可以知道l果集中各列的情?但有时ƈ
不知道结果集中有哪些?是什么类?q时可以通过getMetaData()来获取结果集的情?

    ResulSetMetaData rsmd = rs.getMetaData();
    rsmd.getColumnCount()q回列的个数.
    getColumnLabel(int)q回该int所对应的列的显C标?BR>    getColumnName(int)q回该int所对应的列的在数据库中的名U?
    getColumnType(int)q回该int所对应的列的在数据库中的数据类?
    getColumnTypeName(int)q回该int所对应的列的数据类型在数据源中的名U?
    isReadOnly(int)q回该int所对应的列是否只读.
    isNullable(int)q回该int所对应的列是否可以为空



大雄 2005-10-21 16:57 发表评论
]]>
使用q结池的意义http://www.aygfsteel.com/skylam/archive/2005/10/21/16315.html大雄大雄Fri, 21 Oct 2005 08:56:00 GMThttp://www.aygfsteel.com/skylam/archive/2005/10/21/16315.htmlhttp://www.aygfsteel.com/skylam/comments/16315.htmlhttp://www.aygfsteel.com/skylam/archive/2005/10/21/16315.html#Feedback0http://www.aygfsteel.com/skylam/comments/commentRss/16315.htmlhttp://www.aygfsteel.com/skylam/services/trackbacks/16315.htmlhttp://www.cnjsp.org/view.jsp?column=2&id=12
使用q结池的意义 (2003-11-26 18:50)

一个普通的q结q程?因ؓ(f)Connection一般要用到本地Ҏ(gu),q些初始化是非常耗用pȝ资源?说明在一ơ连l中真正执行语消耗的资源是很的.

如果你的服务器^均每5分种才有一ơ连l?你当然只用这U普通连l?因ؓ(f)整个一ơ连l过E才0.0几秒,你不必要再让q结池在余下?.9几秒中也开着消耗资?但如果每U种?0ơ连l?q时普通连l消耗的初始化资源就很高?用连l池p昄它的优势.所以到底采用什么方式连l?完全要根据你的应?而且要进行实实在在的q发仿真试.不要看到书上说什么方式好q?真正的构架一个^台是一U艺术而不只是一U技?要多斚wl合试扑ֈ最佳的l合.很多陷井q不是技术所能发现的.比如你查看你的JVMq有很多I闲资源,但系l却已经崩溃?因ؓ(f)象连l初始化q种资源消耗在本地Ҏ(gu)?JVM是反映不出来?但却在同一物理内存?q有很多q样的陷?重要的是l验和测?



大雄 2005-10-21 16:56 发表评论
]]>
վ֩ģ壺 | | | | | | | ϲ| ̨| ư| | | С| ɽ| | | Т| ԭ| | | ʯׯ| | | | | | ɳƺ| ƽ| | | | | ׸| | | | | Ƹ| ˮ| ߮| ֳ|