jsp数据库相关一个最简单的问题

spark_li 2010-05-17 10:48:59

代码如下:

<%@ page contentType="text/html;charset=gb2312"%>
<%@ include file="conn.jsp"%>
<html>
<head>
<title>first jsp</title>
</head>
<body>
<%
sql="select id from info";
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery(sql);

rs.moveToInsertRow();
rs.updateInt("id", 110);
rs.insertRow();

rs.close();
stmt.close();
conn.close();

%>
</body>
</html>




死活不成功,报错
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause

javax.servlet.ServletException: com.microsoft.sqlserver.jdbc.SQLServerException: 游标是 READ ONLY 的。
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.lsj.counter_jsp._jspService(counter_jsp.java:120)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause

com.microsoft.sqlserver.jdbc.SQLServerException: 游标是 READ ONLY 的。
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197)
com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:246)
com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:83)
com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:39)
com.microsoft.sqlserver.jdbc.SQLServerResultSet.doInsertRowRPC(SQLServerResultSet.java:3967)
com.microsoft.sqlserver.jdbc.SQLServerResultSet.access$100(SQLServerResultSet.java:16)
com.microsoft.sqlserver.jdbc.SQLServerResultSet$1InsertRowRPC.doExecute(SQLServerResultSet.java:3857)
com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179)
com.microsoft.sqlserver.jdbc.SQLServerResultSet.insertRow(SQLServerResultSet.java:3922)
org.apache.jsp.lsj.counter_jsp._jspService(counter_jsp.java:101)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

...全文
115 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
spark_li 2010-05-18
  • 打赏
  • 举报
回复
还有,我是为了使问题精简,所以才把程序压缩,放到关键点了。

其实,错误提示里面已经放出错误了。

com.microsoft.sqlserver.jdbc.SQLServerException: 游标是 READ ONLY 的。

所以不能update,不能insert
但是,我已经
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

有心人再帮看看吧。
谢谢先。
spark_li 2010-05-18
  • 打赏
  • 举报
回复
晕啊,各位批评得是,
我这个是测试,所以没有
try {} catch ..

另外,回2楼网友,我的连接字符串是对的,因为jdbc的版本问题,所以和你提供的有差别
不好意思啊,才看到大家的回复。
xiaojing_tkgame 2010-05-18
  • 打赏
  • 举报
回复
有点不厚道了
liuyanbinzxy 2010-05-18
  • 打赏
  • 举报
回复
楼主,很多人给你提建议了
你也不回应一下,也不知道解决了没有,
也不知道出现什么新情况了没?
rkind 2010-05-18
  • 打赏
  • 举报
回复
我感觉是没有抛出异常造成的,另外LZ的数据库连接检查过了么
animshuod521 2010-05-18
  • 打赏
  • 举报
回复
你try了吗?没有加异常的抓取
helloswc 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 oicp110 的回复:]
你怎么不按套路出牌~~~~~~~~~
你的语句结构不是很清晰,
如果你要查询数据库,
你要做的就是
1.加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
2.连接数据库
con=DriverManager.getConnection(url, username, pass……
[/Quote].
helloswc 2010-05-18
  • 打赏
  • 举报
回复
String url="jdbc:sqlserver://localhost:1433;databaseName=tempdb;user=sa;password=sa";貌似这里有问题
url="jdbc:sqlserver://localhost:1433;databaseName=tempdb",
user="sa",password="sa"
oicp110 2010-05-18
  • 打赏
  • 举报
回复
你怎么不按套路出牌~~~~~~~~~
你的语句结构不是很清晰,
如果你要查询数据库,
你要做的就是
1.加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
2.连接数据库
con=DriverManager.getConnection(url, username, password);
3.获得Statement
stmt=con.createStatement();
4.查询并获得结果
rs=stmt.executeQuery(sql);

必须将上面的语句放在try中,抛出异常,
同时最好将上面的1和2分别抛出一下异常:

try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}catch(java.lang.ClassNotFoundException e){
out.print("Contect to DateBase error:"+e.getMessage());
}

try{
con=DriverManager.getConnection(url, Auser, Apassword);
}catch(SQLException e){
out.print(e.toString());
}

剩下的具体内容可以上网查一下,非常全的;
chengyu2099 2010-05-18
  • 打赏
  • 举报
回复
楼主心态有问题,不能成大事

首先问题的标题就能说明这点

说什么最简单的问题,既然是最简单的你怎么不会呢

再说,大家帮你回答了,你也不会太感激,因为简单吗

我想,有问题就虚心的问,不要想太多

问题多了,就成牛人啦
ysfxhxyyy 2010-05-18
  • 打赏
  • 举报
回复
rs.moveToInsertRow();
rs.updateInt("id", 110);
rs.insertRow();

这句应当改成
while(rs.next())
{
rs.updateInt("id", 110);
rs.insertRow();

}就可以了。
漂亮的石头 2010-05-18
  • 打赏
  • 举报
回复
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
改成
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

你写的这些是 sqlservler 2005 的 driver 跟 url 要换成 2000的
漂亮的石头 2010-05-18
  • 打赏
  • 举报
回复
你先看看 数据库链接上了么?
url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=tempdb;user=sa;password=sa"

sqlserver 2000 url 不正确
spark_li 2010-05-17
  • 打赏
  • 举报
回复
对了,数据库是mssql server 2000

conn.jsp
内容如下

<%@ page import="java.sql.*"%>
<%
String url="jdbc:sqlserver://localhost:1433;databaseName=tempdb;user=sa;password=sa";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql = null;

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
conn= DriverManager.getConnection(url);
%>


81,092

社区成员

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

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