淘先锋技术网

首页 1 2 3 4 5 6 7

使用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();