一个jsp连接数据库(mssql)的问题,老是解决不了,真急人啊!请来帮帮忙!

salmon 2002-05-16 09:07:53
********************1、数据库连接源文件:db.java ***********************
package stu;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class db
{
String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr="jdbc:odbc:stu";
Connection conn=null;

public void opendb()
{
try
{
Class.forName(sDBDriver);
}catch(ClassNotFoundException cnfe)
{
System.err.println("Error loading driver: "+ cnfe);
}
}

public ResultSet executeQuery(String sql)
{
ResultSet rs=null;
try
{
conn=DriverManager.getConnection(sConnStr);
Statement stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}catch(SQLException sqle)
{
System.err.println("Error connectiong: "+sql);
}
return rs;
}
}

******************2、servlet处理源文件:addNewBBS.java ******************
package stu;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class addNewBBS extends HttpServlet
{
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
{
String id=request.getParameter("id");
String title=request.getParameter("newTitle");
String content=request.getParameter("Content");


/*连接数据库*/
db mydb=new db();
mydb.opendb();

String sql="insert bbs(nvTitle,nvData,ncAuthor,ncProp) values('"+title+"','"+content+"','"+id+"','1')";
ResultSet rs=null;
rs=mydb.executeQuery(sql);
}
}

*****************3、jsp源文件:newBBS.jsp?id=009851216 *****************
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<%@ page contentType="text/html;charset=gb2312"%>
<html>

<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="author" content="Kevin Shi">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>New BBS</title>
</head>

<body bgcolor="#fdf5e6">

<%
String id=request.getParameter("id");
%>
<form action="/stu/servlet/stu.addNewBBS" method="post">
<div align="center">
<center>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#FDF5E6" width="100%" height="223">
<tr>
<td width="10%" height="28"><b>主题:</b></td>
<td width="90%" height="28"><input type="text" name="newTitle" size="85"></td>
</tr>
<tr>
<td width="10%" height="173"><b>内容:</b><p> </td>
<td width="90%" height="173" valign="top">
<textarea cols="80" rows="10" name="Content"></textarea><br>
                        <input type="submit" value="发 表" border="0" name="B1" WIDTH="60" HEIGHT="20">          <INPUT name="B2" TYPE="reset" WIDTH="60" HEIGHT="20" border="0" value="重 写"><br>
</td>
</tr>
<tr>
<td width="10%" height="17"></td>
<td width="90%" height="17" align="right">
<b><font size="2" color="#FF00FF"><a href=javascript:history.go(-1)>返回</a></font></b></td>
</tr>
</table>
</center>
</div>
<input type="hidden" name="id" value=id>
</form>
</body>

</html>
...全文
9 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
iceberg_liu 2002-05-26
插入和修改数据要用 executeUpdate()方法
回复
arthor99 2002-05-26
对,同意。
我觉得可以试试cleverfish(一只鱼) 说的executeUpdate()
可能问题就在这。
回复
cleverfish 2002-05-17
问题在:rs=stmt.executeQuery(sql);

executeQuery(sql)--此方法用于返回数据集rs的操作,即对应于"sql = select ..."的语句操作;
对于数据库的insert、update、delete操作,应该用executeUpdate(sql);

故,你需要在db.java中添加一方法,用于插入、删除、更新操作:
public void executeUpdate(String sql)
{
try
{
conn=DriverManager.getConnection(sConnStr);
Statement stmt=conn.createStatement();
stmt.executeQuery(sql);
}catch(SQLException sqle)
{
System.err.println("Error connectiong: "+sql);
}
}


回复
salmon 2002-05-17
我现在发现一个新问题,就是我用‘查询分析器’再次写入数据库后,发现自动编号的一列跳了几个,这说明,我的java程序是往数据库中写数据(但是没有写成功),触发了自动编号这一列自动增加。 但是为什么没有成功的写入数据呢?

留言板表(bbs)
------------------------------------------------------------------
字段名称 数据类型 NULL 描述
-----------------------------------------------------------------
留言id
iBbsID int No PK
自动生成,每次+1
------------------------------------------------------------------
主题
nvTitle Nvarchar(90) Yes 为主贴而设,回复贴 没内容
------------------------------------------------------------------
作者
ncAuthor Nchar(9) No References Key
引用UserInfo.ncUserID
----------------------------------------------------------------
回复数
iReply Int Yes Default(0)
---------------------------------------------------------------
发表时间
dtTime datatime No 系统函数Getdate()
------------------------------------------------------------
留言内容
nvData Nvarchar(1000) No
--------------------------------------------------------------
留言性质
ncProp Nchar(1) no 主贴是“1”,回复贴“0”
-------------------------------------------------------------------
回复留言id
iReID Int yes Null表示没有回复(对主贴而言)靠此连接留言与回复留言
-------------------------------------------------------------------
点击数
iClick Int yes Default(0)

回复
salmon 2002-05-17
我的jdbc驱动程序是对的,我在别的程序中也用db这个类,是可以的。
回复
cleverfish 2002-05-17
to salmon (salmon) :
试了没??搞定了就结账!还有疑问就继续提问,不要让问题悬而不决!!

希望大家一起养成良好的论坛习惯!
回复
Dickensi 2002-05-16
为森么不用mysql提供的jdbc驱动程序?
看样子是你的url有问题!
回复
xxzx120 2002-05-16
我可真是个菜鸟哟,不敢说解答,学JAVA才一个月,之前有一年都没碰过任何语言,面向对象也是学JAVA才学的,还有,你写的程序太长,我也看不懂……只是胡乱猜测一番,你看是不是因为这:(我可不太识这些字,大概意思是默认的ResultSet 对象是不可更新的、仅向前游标的玩意,当然,你可更改属性……自己看样例吧,我说不好。。。。。。。。。。。对了,管用的话要谢我哟,嘻嘻)
A default ResultSet object is not updatable and has a cursor that moves forward only. Thus, you can iterate through it only once and only from the first row to the last row. It is possible to produce ResultSet objects that are scrollable and/or updatable. The following code fragment, in which con is a valid Connection object, illustrates how to make a result set that is scrollable and insensitive to updates by others, and that is updatable. See ResultSet fields for other options.


Statement stmt = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2");
// rs will be scrollable, will not show changes made by others,
// and will be updatable
回复
salmon 2002-05-16
没有出错信息,一切正常,我也很奇怪,但是就是写不进表中,但是我用“查询分析器”把命令打进去是可以执行的(写入),这说明我的“sql”语句是对的。真的很奇怪!
回复
mygarfield 2002-05-16
出错信息是什么?
回复
salmon 2002-05-16
错误是:数据写不进数据库中的表!
回复
arthor99 2002-05-16
出的什么错你也该写出来,好让大家分析分析
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告