在这提了3次同样的问题了,依然感觉有些无助!

JIEK_ONE 2004-08-29 08:32:35
问题如下,写了个基于数据库的留言版,代码如下:
index.html:
<html>
<head>
<title>绯红流言版</title>
</head>
<body bgcolor="#ccccff" vlink="#000000" alink="#666666">
<div align="center">
<p><font size="7">
<b><font size="+6">绯红驿站</font></b>
</font></p>
<form method="post" action="index.jsp">
<table widt="%75" align="center" border=1>
<tr>
<td width="30%">
<div align="right">姓名:</div>
</td>
<td width="70%">
<input type="text" name="name">
</td>
</tr>
<tr>
<td width="30%">
<div align="right">电子邮件:</div>
</td>
<td width="70%">
<input type="text" name="email">
</td>
</tr>
<tr>
<td width="30%">
<div align="right">个人主页地址:</div>
</td>
<td width="70%">
<input type="text" name="url" value="http://">
</td>
</tr>
<tr>
<td width="%30">
<p>请你留言:</p>
</td>
<td width="70%" >
<textarea name="body" rows="5" cols="30"></textarea>
</td>
</tr>
<tr>
<td width="30%"> </td>
<td width="70%"> </td>
</tr>
<tr>
<td width="30%"> </td>
<td width="70%">
<table width="75%">
<tr>
<td>
<input type="submit" name="send" value="提交">
</td>
<td>
<input type="reset" name="reset" value="重置">
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
<hr>
</div>
</body>
</html>
...全文
243 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
sgdb 2004-08-30
  • 打赏
  • 举报
回复
if(name!=""&&email!=""&&body!="")

看看你这句吧,如果只是要判断非空;
---》
if ((!"".equals(name))&&(!"".equals(email))&&(!"".equals(body)))
JIEK_ONE 2004-08-30
  • 打赏
  • 举报
回复
数据库的建立过程如下,麻烦大家了:
自己在自己机子上先新建了一个数据库,名字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
JIEK_ONE 2004-08-30
  • 打赏
  • 举报
回复
采用了zero_3(书名号)方得到,变量数据能够输出在网页上。看来是数据库方面的问题。
lwqadmin 2004-08-30
  • 打赏
  • 举报
回复
if(!name.equals("")&&!email.equals("")&&!body.equals(""))

应该是这句出错了。曾经我写一个数据的也是。因为我默认值是'',所以取出来的时候用了这样操作name.trim().length()==o name=null;
这样一来,出错了。
JIEK_ONE 2004-08-30
  • 打赏
  • 举报
回复
自己写了个程序来测试了数据库,知道自己的数据库是没有问题的。
然后在大家的提示下,知道问题出现在index.jsp文件中那些建立
数据库连接的代码上。正如Acylas所说的那样啊。
Acylas 2004-08-30
  • 打赏
  • 举报
回复
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();
应该是conn为null
alpga 2004-08-30
  • 打赏
  • 举报
回复
应该这样写if(!name.equals("")&&!email.equals("")&&!body.equals(""))
JIEK_ONE 2004-08-30
  • 打赏
  • 举报
回复
打扰大家了,问题已经得到了解决。
谢谢
tolimit(为JAVA鞠躬尽瘁,死而后已)
asklxf(xuefeng)
jiankou2001(狗狗)
zero_3(书名号)
wooddy_lee(wooddy)
alpga(星宇)
Acylas(Acylas)
lwqadmin()
sgdb(神天月晓)
马上结贴了,相信以后还回在CSDN上遇见大家的。
再见!!
JIEK_ONE 2004-08-30
  • 打赏
  • 举报
回复
并且用了SQL事件探查器看看了,发现stmt.executeUpdate(sql);虽然执行了,但是并没有被SQL事件探查器发现。
wooddy_lee 2004-08-30
  • 打赏
  • 举报
回复
数据没有进入数据库,看看是不是SQL语句出了问题.
输出一下SQL看看.
另外 if(name!=""&&email!=""&&body!="")
不能这么写吧.
JIEK_ONE 2004-08-30
  • 打赏
  • 举报
回复
lwqadmin() 、sgdb(神天月晓)谢谢你们。我现在从程序里去掉了if(name!=""&&email!=""&&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。
去打开数据库看看,结果刚才输入的数据依然没有成功输入数据库啊。
我拿其他的我自己编写的函数向这个数据库写数据,经过数据成功写入。
真的有些不懂了。
JIEK_ONE 2004-08-29
  • 打赏
  • 举报
回复
好的 我试试
zero_3 2004-08-29
  • 打赏
  • 举报
回复
建议你在写入数据库前,先把变量数据输出在网页上,看看是否正确有效,看看有无null后,再写入数据库!
JIEK_ONE 2004-08-29
  • 打赏
  • 举报
回复
NullPointerException我知道出现在那里,然后我把那些代码去掉后,问题没有在出现了。
但是程序应该执行了这段代码,
<%! 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中啊
这是为什么呢?
jiankou2001 2004-08-29
  • 打赏
  • 举报
回复
<jsp:useBean id="sqlbean" class="SqlData" scope="session">
<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"要不要改一下我就不知道了!!
jiankou2001 2004-08-29
  • 打赏
  • 举报
回复
就是自己写一个异常捕捉程序!!
JIEK_ONE 2004-08-29
  • 打赏
  • 举报
回复
我才学习JAVA asklxf麻烦告诉下,怎么跟踪啊
廖雪峰 2004-08-29
  • 打赏
  • 举报
回复
NullPointerException 自己跟踪一下不就知道了?
JIEK_ONE 2004-08-29
  • 打赏
  • 举报
回复
SERVET的配置是没有问题的,建立了一个JSP的数据库,在里面的建立了一个guestbook的表。
JDBC也是配置了的啊,测试数据源成功。
java.lang.NullPointerException
org.apache.jsp.index_jsp._jspService(index_jsp.java:79)
看这句话大概的意思是:有空值。但是看看程序,依然找不到错误什么地方,一直被这件事情
捆饶着,没有睡好觉的啊。大家麻烦看看,代码比较长,大家都比较忙的,所以我在先此谢谢
大家一声!
tolimit 2004-08-29
  • 打赏
  • 举报
回复
空指针,看各个组件名称获取时是否正确!

调试时可以屏蔽一些JSP代码,看出错部分在哪里,!
加载更多回复(3)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧