随笔-211  评论-26  文章-8  trackbacks-0

在阅读本文前请先正确安装设置JSP与Tomcat及Mysql数据库,如有疑问请阅读相关资料。

1. 准备工作

好了,第一步是下载JDBC驱动,我们可以去http://dev.mysql.com/downloads/connector/j/3.1.html下载。目前最新版本的JDBC驱动版本为3.1.10 。下载文件为:mysql-connector-java-3.1.10.zip。直接解压即可。我们只需要mysql-connector-java-3.1.10-bin.jar文件和mysql-connector-java-3.1.10-bin-g.jar文件,把那两个文件放在某个地方,我们可以放在安装目录(如:C:\j2sdk\lib\)里。下一步就是设置环境变量,设置classpath的值为:

.;C:\j2sdk\lib\tools.jar;
C:\j2sdk\lib\mysql-connector-java-3.1.10-bin.jar;
C:\j2sdk\lib\mysql-connector-java-3.1.10-bin-g.jar

配置完环境变量后还有很重要一步就是为JSP连接数据库配置驱动,这个很简单,就是把mysql-connector-java-3.1.10-bin.jar拷到下列文件夹里就行了(假设你的Tomcat装在C盘跟目录下:C:\Tomcat 5.0)

C:\Tomcat 5.0\common\lib

2. 建立数据库

关于下载及安装Mysql数据库可以参阅:http://www.numb1.com/com/php/phpsetup.htm

下一步就是建立数据库,首先从CMD(即DOS)进入mysql,新建一数据库,命令如下:
mysql> create database numb1;

进入新建的数据库:
mysql> use numb1

新建一表格:
mysql> CREATE TABLE `lyb` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(20) default NULL,
`mail` varchar(30) default NULL,
`qq` varchar(15) default NULL,
`txt` text,
PRIMARY KEY (`id`)
);

插入数据
mysql> insert into lyb values('','奶油','root@numb1.com','191106245','你好啊,给你留言,呵呵');
mysql> insert into lyb values('','乐凯','jq_1979@numb1.com','11225032','我也来说两句');


然后
mysql> exit
C:\> exit
就OK了

3. 连接数据库

下面一步也就是本文最精彩部分,前面我们所做的都是为下一步准备的,那就是连接数据库,可以把下列代码村为*.jsp文件,放到TOMCAT运行看看结果

<%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*" errorPage=""%>
<center><b>如果您看到下面表格内的内容,就说明连接数据库成功!</b></center><br><br>
<table width="720" border="1" align="center" cellspacing="0">
<tr>
<th>ID</th>
<th>昵称</th>
<th>E-mail</th>
<th>QQ</th>
<th>留言内容</th>
</tr>
<%
Class.forName("com.mysql.jdbc.Driver").newInstance(); //org.gjt.mm.mysql.Driver
String u ="jdbc:mysql://localhost/numb1?user=root&password=";//useUnicode=true&characterEncoding=gb2312";
java.sql.Connection con = java.sql.DriverManager.getConnection(u);
java.sql.Statement statement =con.createStatement();
String sql="select * from lyb";
java.sql.ResultSet rs = statement.executeQuery(sql);

while(rs.next()) {%>
<tr>
<td><div align="center"><%=rs.getString(1)%> </div></td>
<td><div align="center"><%=rs.getString(2)%> </div></td>
<td><div align="center"><%=rs.getString(3)%> </div></td>
<td><div align="center"><%=rs.getString(4)%> </div></td>
<td><div align="center"><%=rs.getString(5)%> </div></td>
</tr>
<%}%> </table>
<%out.print("<br><br><center>数据库操作成功</center>");%>
<%
rs.close();
statement.close();
con.close();
%>

简单说明几个地方
Class.forName("com.mysql.jdbc.Driver").newInstance(); //org.gjt.mm.mysql.Driver
com.mysql.jdbc.Driver可以替换为org.gjt.mm.mysql.Driver
String u ="jdbc:mysql://localhost/numb1?user=root&password=";

确认你的数据库名为numb1,数据库用户名为:root(系统默认)数据库密码为空

数据库连接到这里就结束了。还有个问题就是当你运行上面的程序,运行结果出现的可能是乱码,着是由于JAVA的编码与Mysql有所差别所致,我们可以采用下列方法解决。

4.乱码的处理

第一种方法:
修改String u ="jdbc:mysql://localhost/numb1?user=root&password="为:String u ="jdbc:mysql://localhost/numb1?user=root&password=&useUnicode=true&characterEncoding=gb2312";
如果MySQL版本是4.1以上的话,“useUnicode=true&characterEncoding=gb2312”加不加都可以,如果不能解决问题的话我们就采用第二中方法。

第二种方法:
先定义一函数

<%!
public String getStr(String s){
String str=s;
try{
byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);
return str;
}
catch(Exception e){return null;}
}
%>

我们把从数据库里所读取的数据通过此函数处理一下代码如下:

<%@ page contentType="text/html; charset=GBK" language="java" import="java.sql.*" errorPage=""%>
<%!
public String getStr(String s){
String str=s;
try{
byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);
return str;
}
catch(Exception e){return null;}
}
%><center><b>如果您看到下面表格内的内容,就说明连接数据库成功!</b></center><br><br>
<table width="720" border="1" align="center" cellspacing="0">
<tr>
<th>ID</th>
<th>昵称</th>
<th>E-mail</th>
<th>QQ</th>
<th>留言内容</th>
</tr>
<%
Class.forName("com.mysql.jdbc.Driver").newInstance(); //org.gjt.mm.mysql.Driver
String u ="jdbc:mysql://localhost/numb1?user=root&password=";//useUnicode=true&characterEncoding=gb2312";
java.sql.Connection con = java.sql.DriverManager.getConnection(u);
java.sql.Statement statement =con.createStatement();
String sql="select * from lyb";
java.sql.ResultSet rs = statement.executeQuery(sql);

while(rs.next()) {%>
<tr>
<td><div align="center"><%=getStr(rs.getString(1))%> </div></td>
<td><div align="center"><%=getStr(rs.getString(2))%> </div></td>
<td><div align="center"><%=getStr(rs.getString(3))%> </div></td>
<td><div align="center"><%=getStr(rs.getString(4))%> </div></td>
<td><div align="center"><%=getStr(rs.getString(5))%> </div></td>
</tr>
<%}%> </table>
<%out.print("<br><br><center>数据库操作成功</center>");%>
<%
rs.close();
statement.close();
con.close();
%>

好了到这里就彻底结束了,如果还是无法正常显示的话,请仔细检查其他设置。或查阅相关资料。

posted on 2006-05-09 21:46 dragon 阅读(205) 评论(0)  编辑  收藏 所属分类: java