index.jsp
<html>
<head>
</head>
<body>
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
<%@ page import="sqldata.SqlData;" %>
<%@ page contentType="text/html;charset=gb2312"%>
<jsp:useBean id="sqlbean" class="SqlData" scope="session">
<jsp:setProperty name="sqlbean" property="*" />
</jsp:useBean>
<%! String name,email,url,body,sql;%>
<%
name=request.getParameter("name");
email=request.getParameter("email");
url=request.getParameter("url");
body=request.getParameter("body");
if(name!=""&&email!=""&&body!="")
{ sql="insert into guestbook(name,email,url,body)values('"+name+"','"+email+"','"+url+"','"+body+"')";
sqlbean.executeInsert(sql);
}
else
{
out.print("<b><font color=red>Sorry,please enter your name,email and body!!!</font></b>");
}
%>
<%
ResultSet RScount = sqlbean.executeQuery("select * from guestbook");
int i = 0;
while(RScount.next())
{
i++;
}
%>
<%-- <p><a name=see><b>Now, <%= RScount %> Records.</b></a></p> --%>
<p><b>现在有<%= i %> 条记录</b></p>
<%
RScount.close();
i=0;
%>
<p> </p>
<%
ResultSet RS=sqlbean.executeQuery("Select * from guestbook");
while(RS.next())
{
name=RS.getString("name");
email=RS.getString("email");
url=RS.getString("url");
body=RS.getString("body");
%>
<table border=1 width=80% >
<tr>
<td width=30% >呢称:</td><td width=70% ><%=name%>
</tr>
<tr>
<td width=30%>电子邮件:</td><td width=70%>
<a href="mailto:<%=email%>"><%=email%></a></td>
</tr>
<tr>
<td width=30%>个人主页地址:</td><td width=70%>
<a href="<%=url%>"><%=url%></a></td>
</tr>
<tr>
<td width=30% >内容:</td><td width=70%><%=body%></td>
</tr>
</table>
<hr>
<%
}
RS.close();
%>
</body>
</html>
<html>
<head>
</head>
<body>
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
<%@ page import="sqldata.SqlData;" %>
<%@ page contentType="text/html;charset=gb2312"%>
<jsp:useBean id="sqlbean" class="SqlData" scope="session">
<jsp:setProperty name="sqlbean" property="*" />
</jsp:useBean>
<%! String name,email,url,body,sql;%>
<%
name=request.getParameter("name");
email=request.getParameter("email");
url=request.getParameter("url");
body=request.getParameter("body");
if(name!=""&&email!=""&&body!="")
{ sql="insert into guestbook(name,email,url,body)values('"+name+"','"+email+"','"+url+"','"+body+"')";
sqlbean.executeInsert(sql);
}
else
{
out.print("<b><font color=red>Sorry,please enter your name,email and body!!!</font></b>");
}
%>
<%
ResultSet RScount = sqlbean.executeQuery("select * from guestbook");
int i = 0;
while(RScount.next())
{
i++;
}
%>
<%-- <p><a name=see><b>Now, <%= RScount %> Records.</b></a></p> --%>
<p><b>现在有<%= i %> 条记录</b></p>
<%
RScount.close();
i=0;
%>
<p> </p>
<%
ResultSet RS=sqlbean.executeQuery("Select * from guestbook");
while(RS.next())
{
name=RS.getString("name");
email=RS.getString("email");
url=RS.getString("url");
body=RS.getString("body");
%>
<table border=1 width=80% >
<tr>
<td width=30% >呢称:</td><td width=70% ><%=name%>
</tr>
<tr>
<td width=30%>电子邮件:</td><td width=70%>
<a href="mailto:<%=email%>"><%=email%></a></td>
</tr>
<tr>
<td width=30%>个人主页地址:</td><td width=70%>
<a href="<%=url%>"><%=url%></a></td>
</tr>
<tr>
<td width=30% >内容:</td><td width=70%><%=body%></td>
</tr>
</table>
<hr>
<%
}
RS.close();
%>
</body>
</html>
package sqldata;
import java.sql.*;public class SqlData
{
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
Connection conn = null;
ResultSet rs = null;
public SqlData(){ try {
Class.forName(sDBDriver);
System.out.println("Success loading JDBC-ODBC Bridge Driver...\n");
} catch(ClassNotFoundException e ) {
System.out.println("Error loading JDBC-ODBC Bridege Driver...\n");
}
} public void executeInsert(String sql) {
try {
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jsp","sa","821");
System.out.println("Success eastabllishing the Connection...\n");
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch(SQLException e) {
System.err.println("sql_data.executeUpdate:" + e.getMessage());
}
} public ResultSet executeQuery(String sql) { rs = null;
try {
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jsp","sa","821");
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
} catch(SQLException e) {
System.err.println("sql_data.executeQuery:" + e.getMessage());
} return rs;} public void executeDelete( String sql) { try {
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jsp","sa","821");
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch(SQLException e) {
System.err.println("sql_data.executeDelete:" + e.getMessage());
}
}}
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
root cause java.lang.NullPointerException
org.apache.jsp.index_jsp._jspService(index_jsp.java:79)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
note The full stack trace of the root cause is available in the Tomcat logs.
JDBC也是配置了的啊,测试数据源成功。
java.lang.NullPointerException
org.apache.jsp.index_jsp._jspService(index_jsp.java:79)
看这句话大概的意思是:有空值。但是看看程序,依然找不到错误什么地方,一直被这件事情
捆饶着,没有睡好觉的啊。大家麻烦看看,代码比较长,大家都比较忙的,所以我在先此谢谢
大家一声!
<jsp:setProperty name="sqlbean" property="*" />
</jsp:useBean>
这个是不是要改一下!
<jsp:useBean id="sqlbean" class="sqldata.SqlData" scope="session">
<jsp:setProperty name="sqlbean" property="*" />
</jsp:useBean>
那个scope="session"要不要改一下我就不知道了!!
但是程序应该执行了这段代码,
<%! String name,email,url,body,sql;%>
<%
name=request.getParameter("name");
email=request.getParameter("email");
url=request.getParameter("url");
body=request.getParameter("body");
if(name!=""&&email!=""&&body!="")
{ sql="insert into guestbook(name,email,url,body)values('"+name+"','"+email+"','"+url+"','"+body+"')";
sqlbean.executeInsert(sql);
}
else
{
out.print("<b><font color=red>Sorry,please enter your name,email and body!!!</font></b>");
我去数据库JSP中看表guestbook,奇怪的是,刚才输入的数据并没有写入数据库jsp中啊
这是为什么呢?
自己在自己机子上先新建了一个数据库,名字jsp。在此库中新建了一个表guestbook。
然后添加ODBC数据源过程后得到消息:
Microsoft SQL Server ODBC 驱动程序版本 03.81.7713数据源名称: guestbook.dsn
数据源描述: guestbook
Server: (local)
数据库: jsp
语言: (Default)
翻译字符数据: Yes
日志长运行查询: No
日志驱动程序统计: No
使用集成安全机制: No
使用区域设置: No
预定义的语句选项: 在断开时删除临时存储过程
使用故障转移服务器: No
使用 ANSI 引用的标识符: Yes
使用 ANSI 的空值,填充和警告: Yes
数据加密: No
输出一下SQL看看.
另外 if(name!=""&&email!=""&&body!="")
不能这么写吧.
try {
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jsp","sa","821");
System.out.println("Success eastabllishing the Connection...\n");
Statement stmt = conn.createStatement();
应该是conn为null
然后在大家的提示下,知道问题出现在index.jsp文件中那些建立
数据库连接的代码上。正如Acylas所说的那样啊。
这样一来,出错了。
---》
if ((!"".equals(name))&&(!"".equals(email))&&(!"".equals(body)))
sql="insert into guestbook values('name','email','url','body')";
int s = 0;
s=sqlbean.executeInsert(sql);
out.println(s);
在这以后的的语句都去掉了,我的目的主要是检查程序是否真的执行了.executeInsert(sql)
(因为函数executeInsert(sql)回调用executeUpdate(sql),而executeUpdate(sql)返回一个整数,所以我想看看如果s值变了表示executeUpdate(sql)确实执行了,结果s=2 表示执行了插入命令)
当然SqlData也做了变化:
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
改为了String sDBDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";public int executeInsert(String sql) {
int j = 0;
try {
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jsp","sa","821");
System.out.println("Success eastabllishing the Connection...\n");
Statement stmt = conn.createStatement();
j = stmt.executeUpdate(sql);
} catch(SQLException e) {
System.err.println("sql_data.executeUpdate:" + e.getMessage());
}
return j;
}
执行后的页面上显示如下:2。
去打开数据库看看,结果刚才输入的数据依然没有成功输入数据库啊。
我拿其他的我自己编写的函数向这个数据库写数据,经过数据成功写入。
真的有些不懂了。
谢谢
tolimit(为JAVA鞠躬尽瘁,死而后已)
asklxf(xuefeng)
jiankou2001(狗狗)
zero_3(书名号)
wooddy_lee(wooddy)
alpga(星宇)
Acylas(Acylas)
lwqadmin()
sgdb(神天月晓)
马上结贴了,相信以后还回在CSDN上遇见大家的。
再见!!