使用NetBeans JSP中使用JDBC访问Java DB数据库,首先了解一下Java DB数据库:Java DB是Sun公司的轻量级数据库。它却是一个先进的全事务处理的基于Java技术的数据库,它支持各类开放标准、触发器和存储程序。Java DB可以客户端服务器模式使用,也可以直接嵌入到一个Java应用程序中。在这些场合,Java DB都可以在同样的Java虚拟机(JVM)中运行,这就无需在应用程序之外单独购买、下载、安装或管理这个数据库。对于选择在生产中采用Java DB的客户,Sun将提供支持服务。
在NetBeans中使用Java DB:http://developer.51cto.com/art/200906/128011.htm
不过我用的是NetBeans 6.8的版本,安装完之后(连glassfish也一起安装),在glassfish的安装目录里也就安装了Java DB。然后在NetBeans的服务里的数据库里看看,也注册了Java DB。这时我们就可以点Java DB来创建Java DB数据库了,我们还可以在Java DB的属性中看到Java DB的安装路径,以及指定我们所创建的数据库的位置(SQLServer数据库中数据库默认的位置是SQLServer主文件的安装路径的data里,我们可以右击数据库服务器名(就是数据库里的根节点,一般为主机名\SQLEXPRESS)然后在服务器属性的数据库设置里指定数据库的位置)。创建完Java DB数据库以后在下面的数据库连接里就会出现一条连接(这就类似于在vs里创建SQLServer数据库,只不过vs中SQLServer数据库的连接形式是:服务器名.数据库名,实际上连接字符串中确定连哪个数据库也是这样的形式:如Data Source=.\SQLEXPRESS;Initial Catalog=TEST;Integrated Security=True;Pooling=False,Data Source指明数据库服务器名,Initial Catalog指明哪个数据库,而NetBeans中Java DB数据库的连接形式:如jdbc:derby://localhost:1527/MyFirstJavaDB,差不多就是路径的形式,而数据库的位置我们在上一部已经设置好了,事实上这差不多就相当于连接字符串,我们等会儿会用到)
下面写的数据驱动(提供)程序,在引入java DB的驱动程序库后,把这些数据驱动程序所在的包写出来
Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
.NET中是把数据驱动程序写在链接字符串里的Provider=后面,只不过SQLServer数据库的数据驱动程序是默认的,不用专门写出来,而对于其他,如与OLE DB兼容的数据库,要写出其数据驱动程序:Provider=SQLODEDB;Access数据库:Provider=Microsoft.Jet.OLEDB.4.0;
现在直接上JSP代码:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%
java.sql.Connection conn=null;
java.lang.String mysql;
java.sql.Statement cmd=null;
java.sql.ResultSet reader=null;
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
try{
Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
conn=java.sql.DriverManager.getConnection("jdbc:derby://localhost:1527/MyFirstJavaDB");
cmd=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
mysql="select * from student";
reader=cmd.executeQuery(mysql);
%>
<center>Student Course</center>
<table>
<tr>
<td>ID</td>
<td>NAME</td>
<td>COURSE</td>
<td>SCORE</td>
<td>TeacherName</td>
</tr>
<%while(reader.next()){%>
<tr>
<td><%=reader.getString("SID")%></td>
<td><%=reader.getString("SNAME")%></td>
<td><%=reader.getString("COURSE")%></td>
<td><%=reader.getString("SCORE")%></td>
<td><%=reader.getString("TNAME")%></td>
</tr>
<%}%>
</table>
<%
}
catch(java.sql.SQLException e)
{
out.println(e.toString());
}
finally{
if(reader!=null)reader.close();
if(cmd!=null)cmd.close();
if(conn!=null)conn.close();
}
%>
</body>
</html>
整个过程跟ASP.NET基本差不多,有些对应关系如下:
java .net
Connection SqlConnection
Statement SqlCommand
ResultSet SqlDataReader
另外还要引入Java DB的驱动程序的库(程序集),在添加库中选Java DB驱动程序即可。
对于下面代码,可以看出jdbc:derby://localhost:1527/MyFirstJavaDB就相当于连接字符串,它和Class.forName中的驱动程序,我们可以从服务里数据库连接的属性那里复制过来。
而驱动程序就位于我们添加的Java DB库里,我们可以在该程序集里找到org.apache.derby.jdbc的包。
Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
conn=java.sql.DriverManager.getConnection("jdbc:derby://localhost:1527/MyFirstJavaDB");
cmd=conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
.NET在中SqlCommand对象也可以通过SqlConnection对象创建:SqlCommand cmd=conn.CreateCommand();