欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSP连接Mysql数据库详解与实例

程序员文章站 2022-04-15 13:01:40
1. 准备工作好了,第一步是下载JDBC驱动,我们可以去https://dev.mysql.com/downloads/connector/j /3.1.html下载。目前最新版本...
1. 准备工作
好了,第一步是下载JDBC驱动,我们可以去https://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:j2sdklib)里。下一步就是设置环境变量,设置classpath的值为:

.;C:j2sdklib ools.jar;
C:j2sdklibmysql-connector-java-3.1.10-bin.jar;
C:j2sdklibmysql-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.0commonlib


2. 建立数据库
关于下载及安装Mysql数据库可以参阅:https://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><p align="center"><%=rs.getString(1)%> </p></td>
<td><p align="center"><%=rs.getString(2)%> </p></td>
<td><p align="center"><%=rs.getString(3)%> </p></td>
<td><p align="center"><%=rs.getString(4)%> </p></td>
<td><p align="center"><%=rs.getString(5)%> </p></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);

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

留言板下(荐):https://www.numb1.com/download/download.php?id=jm1

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