﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-等牛奶的咖啡-文章分类-JDBC学习记录</title><link>http://www.blogjava.net/coffee3236888/category/42242.html</link><description>经营属于我们的咖啡屋</description><language>zh-cn</language><lastBuildDate>Tue, 20 Oct 2009 07:43:38 GMT</lastBuildDate><pubDate>Tue, 20 Oct 2009 07:43:38 GMT</pubDate><ttl>60</ttl><item><title>JDBC学习笔记（三）</title><link>http://www.blogjava.net/coffee3236888/articles/298977.html</link><dc:creator>等牛奶的咖啡</dc:creator><author>等牛奶的咖啡</author><pubDate>Tue, 20 Oct 2009 02:10:00 GMT</pubDate><guid>http://www.blogjava.net/coffee3236888/articles/298977.html</guid><wfw:comment>http://www.blogjava.net/coffee3236888/comments/298977.html</wfw:comment><comments>http://www.blogjava.net/coffee3236888/articles/298977.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/coffee3236888/comments/commentRss/298977.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coffee3236888/services/trackbacks/298977.html</trackback:ping><description><![CDATA[<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">JDBC</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">与持久化</span></strong></p>
<p><br />
</p>
<p style="margin-left: 45pt; text-indent: -36pt;"><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US"><span>（1）<span style="font-family: &quot;Times new roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span></span></span></strong>
<strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">概念</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">&nbsp;<wbr>&nbsp;<wbr>
持久（<span xml:lang="EN-US" lang="EN-US">Persistence</span>），即把数据（如内存中的对象）保存到可永久保存的存储设备中（如磁盘）。持久化的主要应用是将内存中的数据存储在关系型的数据库中，当然也可以存储在磁盘文件中、<span xml:lang="EN-US" lang="EN-US">XML</span>数据文件中等等。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">持久层（<span xml:lang="EN-US" lang="EN-US">Persistence
Layer</span>），即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面，将数据使用者和数据实体相关联。</span></strong></p>
<p><br />
</p>
<p style="margin-left: 45pt; text-indent: -36pt;"><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US"><span>（2）<span style="font-family: &quot;Times new roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span></span></span></strong>
<strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">直接使用<span xml:lang="EN-US" lang="EN-US">JDBC</span>操作数据库</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">&nbsp;<wbr>&nbsp;<wbr>
直接使用<span xml:lang="EN-US" lang="EN-US">JDBC</span>操作数据库，步骤如下：</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">1</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">、建立数据库连接，获得<span xml:lang="EN-US" lang="EN-US">Connection</span>对象。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">2</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">、根据用户的输入组装查询<span xml:lang="EN-US" lang="EN-US">SQL</span>语句。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">3</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">、根据<span xml:lang="EN-US" lang="EN-US">SQL</span>语句建立<span xml:lang="EN-US" lang="EN-US">Statement</span>对象或者<span xml:lang="EN-US" lang="EN-US">PreparedStatement</span>对象。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">4</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">、用<span xml:lang="EN-US" lang="EN-US">Connection</span>对象执行<span xml:lang="EN-US" lang="EN-US">SQL</span>语句，获得结果集<span xml:lang="EN-US" lang="EN-US">ResultSet</span>对象。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">5</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">、然后一条一条读取结果集<span xml:lang="EN-US" lang="EN-US">ResultSet</span>对象中的数据。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">6</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">、根据读取到的数据，按特定的业务逻辑进行计算。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">7</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">、根据计算得到的结果再组装更新<span xml:lang="EN-US" lang="EN-US">SQL</span>语句。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">8</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">、使用<span xml:lang="EN-US" lang="EN-US">Connection</span>对象执行更新<span xml:lang="EN-US" lang="EN-US">SQL</span>语句，以更新数据库中的数据。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">9</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">、最后依次关闭各个<span xml:lang="EN-US" lang="EN-US">Statement</span>对象和<span xml:lang="EN-US" lang="EN-US">Connection</span>对象。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">这种模式下开发和维护<span xml:lang="EN-US" lang="EN-US">SQL</span>困难，出现大量的重复代码，而且这种模式的业务处理逻辑和数据存储逻辑混杂在一起，测试和维护有一定的难度，如要对其中某些业务逻辑或者一些相关联的业务流程做修改，要改动的代码量将不可想象。</span></strong></p>
<p><br />
</p>
<p style="margin-left: 45pt; text-indent: -36pt;"><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US"><span>（3）<span style="font-family: &quot;Times new roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span></span></span></strong>
<strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">业务处理逻辑与数据存储逻辑的分离</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">&nbsp;<wbr>&nbsp;<wbr>
提倡<span xml:lang="EN-US" lang="EN-US">"</span>高内聚，低耦合<span xml:lang="EN-US" lang="EN-US">"</span>是构架永恒的话题，将复杂的业务逻辑和数据逻辑分离，是持久化要做的工作。<span xml:lang="EN-US" lang="EN-US">MVC</span> 模式实现了架构上将表现层（即<span xml:lang="EN-US" lang="EN-US">View</span>）和数据处理层（即<span xml:lang="EN-US" lang="EN-US">Model</span>）分离的解耦合，而持久化的设计则实现了数据处理层内部的业务逻辑和数据逻辑分离的解耦合。这样在数据存储层通过<span xml:lang="EN-US" lang="EN-US">JDBC</span>编程把数据库访问操作封装起来，提供简洁的<span xml:lang="EN-US" lang="EN-US">API</span>，供业务层统一调用。</span></strong></p>
<p><br />
</p>
<p style="margin-left: 45pt; text-indent: -36pt;"><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US"><span>（4）<span style="font-family: &quot;Times new roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span></span></span></strong>
<strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">持久层框架</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">&nbsp;<wbr>&nbsp;<wbr>
关于持久化框架，有<span xml:lang="EN-US" lang="EN-US">hibernate</span>，<span xml:lang="EN-US" lang="EN-US">ibatis</span>等<span xml:lang="EN-US" lang="EN-US">.</span></span></strong><strong><span style="font-size: 14pt;" xml:lang="EN-US" lang="EN-US">&nbsp;<wbr></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">ibatis</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">和<span xml:lang="EN-US" lang="EN-US">hibernate</span>都是<span xml:lang="EN-US" lang="EN-US">ORM</span>解决方案<span xml:lang="EN-US" lang="EN-US">,</span>不同的是两者各有侧重。<span xml:lang="EN-US" lang="EN-US">Hibernate</span>提供了<span xml:lang="EN-US" lang="EN-US">Java</span>对象到数据库表之间的直接映射，开发者无需直接涉及数据库操作的实现细节，实现了一站式的<span xml:lang="EN-US" lang="EN-US">ORM</span>解决方案。而<span xml:lang="EN-US" lang="EN-US">ibatis</span>则采取了另一种方式，即提供<span xml:lang="EN-US" lang="EN-US">Java</span>对象到<span xml:lang="EN-US" lang="EN-US">SQL</span>（面向参数和结果集）的映射实现，实际的数据库操作需要通过手动编写<span xml:lang="EN-US" lang="EN-US">SQL</span>实现。和<span xml:lang="EN-US" lang="EN-US">Hibernate</span>相比，<span xml:lang="EN-US" lang="EN-US">iBatis</span>最大的特点就是小巧，上手很快。如果你不需要太多复杂的功能，<span xml:lang="EN-US" lang="EN-US">iBatis</span>是能满足你的要求又足够灵活的最简单的解决方案。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;"><br />
</span></strong></p>
<strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">ps:下一阶段学习目标——ibatis</span></strong>
<img src ="http://www.blogjava.net/coffee3236888/aggbug/298977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coffee3236888/" target="_blank">等牛奶的咖啡</a> 2009-10-20 10:10 <a href="http://www.blogjava.net/coffee3236888/articles/298977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDBC学习笔记（二）</title><link>http://www.blogjava.net/coffee3236888/articles/298976.html</link><dc:creator>等牛奶的咖啡</dc:creator><author>等牛奶的咖啡</author><pubDate>Tue, 20 Oct 2009 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/coffee3236888/articles/298976.html</guid><wfw:comment>http://www.blogjava.net/coffee3236888/comments/298976.html</wfw:comment><comments>http://www.blogjava.net/coffee3236888/articles/298976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/coffee3236888/comments/commentRss/298976.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coffee3236888/services/trackbacks/298976.html</trackback:ping><description><![CDATA[<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">JDBC</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">在连接数据库的时候常用的类包括<span xml:lang="EN-US" lang="EN-US">DriverManager</span>、<span xml:lang="EN-US" lang="EN-US">Connection</span>、<span xml:lang="EN-US" lang="EN-US">Statement</span>、<span xml:lang="EN-US" lang="EN-US">PreparedStatement</span>、<span xml:lang="EN-US" lang="EN-US">ResultSet</span>。其主要联系如下图</span></strong></p>
<table style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 239.4pt;" valign="top" width="319">
            <p style="text-align: center;" align="center"><strong><span style="font-size: 12pt; font-family: Arial;" xml:lang="EN-US" lang="EN-US">DriverManager</span></strong><strong><span style="font-size: 12pt; font-family: 楷体_GB2312;">类</span></strong></p>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 239.4pt;" valign="top" width="319">
            <p style="text-align: center;" align="center"><strong><span style="font-size: 12pt; font-family: Arial;" xml:lang="EN-US" lang="EN-US">Connection <span>&nbsp;<wbr></span>getConnection(String
            url)</span></strong></p>
            </td>
        </tr>
    </tbody>
</table>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span></span></strong>
<strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">&#8595;</span></strong></p>
<table style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 185.4pt;" valign="top" width="247">
            <p style="text-align: center;" align="center"><strong><span style="font-size: 12pt; font-family: Arial;" xml:lang="EN-US" lang="EN-US">Connection</span></strong><strong><span style="font-size: 12pt; font-family: 楷体_GB2312;">类</span></strong></p>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 185.4pt;" valign="top" width="247">
            <p style="text-align: center;" align="center"><strong><span style="font-size: 12pt; font-family: Arial;" xml:lang="EN-US" lang="EN-US">Statement <span>&nbsp;<wbr></span>createStatement()</span></strong></p>
            </td>
        </tr>
    </tbody>
</table>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span></span></strong>
<strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">&#8595;</span></strong></p>
<table style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 185.4pt;" valign="top" width="247">
            <p style="text-align: center;" align="center"><strong><span style="font-size: 12pt; font-family: Arial;" xml:lang="EN-US" lang="EN-US">Statement</span></strong><strong><span style="font-size: 12pt; font-family: 楷体_GB2312;">类</span></strong></p>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 185.4pt;" valign="top" width="247">
            <p style="text-align: center;" align="center"><strong><span style="font-size: 12pt; font-family: Arial;" xml:lang="EN-US" lang="EN-US">ResultSet <span>&nbsp;<wbr></span>executeQuary()</span></strong></p>
            </td>
        </tr>
    </tbody>
</table>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US"><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span></span></strong>
<strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">&#8595;</span></strong></p>
<table style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 230.4pt;" valign="top" width="307">
            <p style="text-align: center;" align="center"><strong><span style="font-size: 12pt; font-family: Arial;" xml:lang="EN-US" lang="EN-US">ResultSet</span></strong><strong><span style="font-size: 12pt; font-family: 楷体_GB2312;">类</span></strong></p>
            </td>
        </tr>
        <tr>
            <td style="padding: 0cm 5.4pt; width: 230.4pt;" valign="top" width="307">
            <p style="text-align: center;" align="center"><strong><span style="font-size: 12pt; font-family: Arial;" xml:lang="EN-US" lang="EN-US">Boolean next()</span></strong></p>
            <p style="text-align: center;" align="center"><strong><span style="font-size: 12pt; font-family: Arial;" xml:lang="EN-US" lang="EN-US">String getString(String
            columnLabel)</span></strong></p>
            </td>
        </tr>
    </tbody>
</table>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">&nbsp;<wbr></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">使用<span xml:lang="EN-US" lang="EN-US">JDBC</span>对数据库进行检索的步骤：</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">加载<span xml:lang="EN-US" lang="EN-US">JDBC</span>驱动程序（<span xml:lang="EN-US" lang="EN-US">DriverManager</span>类）</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">创建数据库连接的<span xml:lang="EN-US" lang="EN-US">Connection</span>对象</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">创建<span xml:lang="EN-US" lang="EN-US">Statement</span>对象并执行<span xml:lang="EN-US" lang="EN-US">SQL</span>语句，返回<span xml:lang="EN-US" lang="EN-US">ResultSet</span>对象</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">使用<span xml:lang="EN-US" lang="EN-US">ResultSet</span>对象遍历数据行</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">&nbsp;<wbr></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">例子：</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">使用<span xml:lang="EN-US" lang="EN-US">mysql</span>数据库，版本为<span xml:lang="EN-US" lang="EN-US">5.1</span>，驱动程序为<span xml:lang="EN-US" lang="EN-US">mysql-connector-java-5.1.8-bin.jar</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">建立数据库<span xml:lang="EN-US" lang="EN-US">coffee</span>，表<span xml:lang="EN-US" lang="EN-US">test</span></span></strong></p>
<p><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=4b7fc6e90100f75v&amp;url=http://static1.photo.sina.com.cn/orignal/4b7fc6e9g73be85354620&amp;690" target="_blank"><img src="http://static1.photo.sina.com.cn/bmiddle/4b7fc6e9g73be85354620&amp;690" alt="" /></a></p>
<p><br />
<strong></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;"><span xml:lang="EN-US" lang="EN-US"><br />
</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">程序</span></strong></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #008000;">/**</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #008000;">&nbsp;*&nbsp;JDBC例子.<br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #008000;">&nbsp;*&nbsp;</span><span style="color: #808080;">@author</span><span style="color: #008000;">&nbsp;LL<br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #008000;">&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.sql.Connection;<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.sql.ResultSet;<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.sql.DriverManager;<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.sql.Statement;<br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.sql.SQLException;<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;JDBCExample&nbsp;{<br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;connectionURL&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">jdbc:mysql://localhost:3306/coffee</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;con&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">导入驱动程序</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(</span><span style="color: #000000;">"</span><span style="color: #000000;">com.mysql.jdbc.Driver</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">创建代表数据库连接的Connection对象</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;DriverManager.getConnection(connectionURL,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">root</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">123</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">创建可以执行SQL的Statement对象</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement&nbsp;stmt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;con.createStatement();<br />
</span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">检索结果</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet&nbsp;rs&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;stmt.executeQuery(</span><span style="color: #000000;">"</span><span style="color: #000000;">select&nbsp;name,&nbsp;data&nbsp;from&nbsp;Test</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">遍历检索结果</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(rs.next())<br />
</span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">name:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">\t</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;rs.getString(</span><span style="color: #000000;">"</span><span style="color: #000000;">name</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">\n</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">data:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">\t</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;rs.getString(</span><span style="color: #000000;">"</span><span style="color: #000000;">data</span><span style="color: #000000;">"</span><span style="color: #000000;">));<br />
</span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(SQLException&nbsp;e)&nbsp;{<br />
</span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
</span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(Exception&nbsp;e)&nbsp;{<br />
</span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
</span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">}<br />
</span><span style="color: #008080;">38</span> <br />
<br />
<br />
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">执行结果为</span></strong></p>
<p><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=4b7fc6e90100f75v&amp;url=http://static6.photo.sina.com.cn/orignal/4b7fc6e9g73be86b04ff5&amp;690" target="_blank"><img src="http://static6.photo.sina.com.cn/bmiddle/4b7fc6e9g73be86b04ff5&amp;690"  alt="" /></a></p>
</div>
<img src ="http://www.blogjava.net/coffee3236888/aggbug/298976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coffee3236888/" target="_blank">等牛奶的咖啡</a> 2009-10-20 10:06 <a href="http://www.blogjava.net/coffee3236888/articles/298976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDBC学习笔记（一）</title><link>http://www.blogjava.net/coffee3236888/articles/298971.html</link><dc:creator>等牛奶的咖啡</dc:creator><author>等牛奶的咖啡</author><pubDate>Tue, 20 Oct 2009 01:58:00 GMT</pubDate><guid>http://www.blogjava.net/coffee3236888/articles/298971.html</guid><wfw:comment>http://www.blogjava.net/coffee3236888/comments/298971.html</wfw:comment><comments>http://www.blogjava.net/coffee3236888/articles/298971.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/coffee3236888/comments/commentRss/298971.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coffee3236888/services/trackbacks/298971.html</trackback:ping><description><![CDATA[&nbsp;
<div class="articleContent" id="articleBody"><wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
<strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">JDBC</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">（<span xml:lang="EN-US" lang="EN-US">Java Data Base
Connectivity,java</span>数据库连接）是一种用于执行<span xml:lang="EN-US" lang="EN-US">SQL</span>语句的<span xml:lang="EN-US" lang="EN-US">Java
API</span>，可以为多种关系数据库提供统一访问，它由一组用<span xml:lang="EN-US" lang="EN-US">Java</span>语言编写的类和接口组成。<span xml:lang="EN-US" lang="EN-US">JDBC</span>为开发人员提供了一个标准的<span xml:lang="EN-US" lang="EN-US">API</span>，以构建更高级的工具和接口。<br />
<br />
</span></strong>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
整个<span xml:lang="EN-US" lang="EN-US">JDBC</span>包被分成两个包：<span xml:lang="EN-US" lang="EN-US">java.sql</span>和<span xml:lang="EN-US" lang="EN-US">javax.sql</span>，其中<span xml:lang="EN-US" lang="EN-US">java.sql</span>是核心包，<span xml:lang="EN-US" lang="EN-US">javax.sql</span>是对<span xml:lang="EN-US" lang="EN-US">JDBC</span>的扩展。常用的接口和类如下：</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">&nbsp;<wbr></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">DriverManager</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">类：负责管理对<span xml:lang="EN-US" lang="EN-US">JDBC</span>应用加载的驱动程序的访问，其中主要的方法是<span xml:lang="EN-US" lang="EN-US">Connection getConnection(String
url)</span>，参数<span xml:lang="EN-US" lang="EN-US">url</span>用于连接数据库，格式为<span xml:lang="EN-US" lang="EN-US">jdbc:subprotocol:subname</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">常用数据库的驱动程序及
<span xml:lang="EN-US" lang="EN-US">JDBC URL:</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">&lt;</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">一<span xml:lang="EN-US" lang="EN-US">&gt; Oracle</span> 数据库 <span xml:lang="EN-US" lang="EN-US">:</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">驱动程序包名： <span xml:lang="EN-US" lang="EN-US">ojdbc14.jar</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">驱动类的名字： <span xml:lang="EN-US" lang="EN-US">oracle.jdbc.driver.OracleDriver</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">JDBC URL</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">为<span xml:lang="EN-US" lang="EN-US">jdbc:oracle:thin:@IP:1521:databasename</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">&lt;</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">二<span xml:lang="EN-US" lang="EN-US">&gt; <span>SQL
Server</span></span> <span>数据库</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">驱动程序包名：<span xml:lang="EN-US" lang="EN-US">msbase.jar</span>、<span xml:lang="EN-US" lang="EN-US">mssqlserver.jar</span>、<span xml:lang="EN-US" lang="EN-US">msutil.jar</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">驱动类的名字：<span xml:lang="EN-US" lang="EN-US">com.microsoft.jdbc.sqlserver.SQLServerDriver</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">JDBC URL</span></strong> <strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">为<span xml:lang="EN-US" lang="EN-US">jdbc:microsoft:sqlserver://IP:1433;DatabaseName</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">&lt;</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">三<span xml:lang="EN-US" lang="EN-US">&gt; MySQL</span> 数据库</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">驱动程序包名： <span xml:lang="EN-US" lang="EN-US">mysql-connector-java-3.1.11-bin.jar</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">驱动类的名字： <span xml:lang="EN-US" lang="EN-US">com.mysql.jdbc.Driver</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">JDBC URL</span></strong> <strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">： <span xml:lang="EN-US" lang="EN-US">jdbc:mysql://
IP:3306/databasename</span></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">&nbsp;<wbr></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">Connection</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">类：主要用语创建<span xml:lang="EN-US" lang="EN-US">Statement</span>对象，可以使用这些<span xml:lang="EN-US" lang="EN-US">Statement</span>对象在数据库上执行<span xml:lang="EN-US" lang="EN-US">SQL</span>语句。<span xml:lang="EN-US" lang="EN-US">DriverManager</span>返回一个<span xml:lang="EN-US" lang="EN-US">Connection</span>类型的对象（<span xml:lang="EN-US" lang="EN-US">getConnection</span>方法的返回值），<span xml:lang="EN-US" lang="EN-US">Connection</span>对象代表了与数据库的连接。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">&nbsp;<wbr></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">Statement</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">类：用于在数据库上执行<span xml:lang="EN-US" lang="EN-US">SQL</span>语句。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">PreparedStatement</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">类：也是允许在数据库上执行<span xml:lang="EN-US" lang="EN-US">SQL</span>语句。在执行前先把查询语句呈现给数据库，多次执行的<span xml:lang="EN-US" lang="EN-US">SQL</span>语句性能会更好。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">ResultSet</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">类：用于遍历<span xml:lang="EN-US" lang="EN-US">SQL</span>的<span xml:lang="EN-US" lang="EN-US">select</span>语句执行后返回的结果。</span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">&nbsp;<wbr></span></strong></p>
<p><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;" xml:lang="EN-US" lang="EN-US">DataSource</span></strong><strong><span style="font-size: 14pt; font-family: 楷体_GB2312;">类：<span xml:lang="EN-US" lang="EN-US">javax.sql.DataSource</span>实现，封装了数据库连接的细节。连接池和分布式事务都是通过<span xml:lang="EN-US" lang="EN-US">DataSource</span>来实现的。</span></strong></p>
</div>
<img src ="http://www.blogjava.net/coffee3236888/aggbug/298971.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coffee3236888/" target="_blank">等牛奶的咖啡</a> 2009-10-20 09:58 <a href="http://www.blogjava.net/coffee3236888/articles/298971.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>