JSP Web开发入门系列(一)---JDBC基础

           我从.net转到java平台多少有些不同,仅以这个开发入门系列是个人自学的记录。第一篇主要是利用jdbc连接数据库和执行sql查询语句。 

          开发环境:winXPsp3+JDK1.6+MyEclipse7.5+MySql5.1.

         具体的jdk环境配置就不写了,至于JDBC for MySQL的配置也是非常简单的。只要将Mysql的JDBC驱动程序下载解压,再在MyEclipse工程中添加mysql-connector-java-5.1.13-bin.jar。如下图:

    

      在搭建好环境后,我们来了解下JDBC,它是一种基于java的数据库访问接口,提供了查询,更新数据库的方法。JDBC的实现依赖于数据库厂商提供符合JDBC规范的驱动程序。有许多持久化的框架是基于JDBC的,如著名的Hibernate。“裸用”JDBC只是为了熟悉一下java体系,理解一下技术原理。

       其实操作数据库都是四个步骤:

       1.读入数据库驱动。当然在windows的时候这一步是不用做的。但是我们使用的JDBC是需要通过代码来读入数据库驱动:

Class.forName("com.mysql.jdbc.Driver");

     2.建立数据库连接。要在代码中提供包括:数据库服务器名(IP地址,域名或者机器名),端口(可以默认),数据库名,用户名,密码这五类信息,才成功连接数据库。

 

 

//mysql_jdbc 驱动默认不支持多结果集,需要添加allowMultiQueries=true;
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/viki?characterEncoding=UTF8&allowMultiQueries=true","root","9527");

 

 

     在我的代码中数据库名是:viki,用户名是:root,密码是:9527. 至于allowMultiQueries这行字符将在下面讲到。

    3.创建或者获得数据操作对象。在获得该对象后,我们就可以对数据库进行查询,修改和执行存储过程。

 

//创建statement对象
Statement stat =conn.createStatement();

4.显式关闭数据连接,关闭数据库。

 

//显式关闭数据连接
stat.close();
conn.close();

     在网上经常有帖子询问:为什么不能在java中执行多条sql语句?这个问题需要回到第二步,只要在连接mysql数据库的字符串上allowMultiQueries=ture就能够轻松将其地解决。(另外一种方法是使用statement的addbatch方法来实现。)

      下面贴出基于JDBC,使用多条sql语句来操作数据库,实现数据库查询的完整实例代码。

      

代码
package JDBCTest;

import java.sql.*;

publicclass ResultFromExcute {

/**
*
@param args
*/
publicstaticvoid main(String[] args) throws Exception {
// TODO Auto-generated method stub
Class.forName("com.mysql.jdbc.Driver");
//mysql_jdbc 驱动默认不支持多结果集,需要添加allowMultiQueries=true;
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/viki?characterEncoding=UTF8&allowMultiQueries=true","root","9527");
Statement stat
=conn.createStatement();

//执行两句sql语句
String selectData ="SELECT * FROM test;"+"SELECT * FROM pet";
if(stat.execute(selectData))
{
ResultSet result
=null;
do
{
//依次获得执行两条select语句的resultset
result = stat.getResultSet();

while(result.next())
{
//System.out.println(result.getString(2)+" ");
System.out.println(result.getString("name"));
………………
}
}
while(stat.getMoreResults());

}

}

}

 

 

 

 

posted @ 2010-09-28 21:33  林场  阅读(932)  评论(0编辑  收藏  举报
知识共享许可协议
本作品由VentLam创作,采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。