代码如下:<%@ 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)
内容如下<%@ 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);
%>
url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=tempdb;user=sa;password=sa"sqlserver 2000 url 不正确
改成
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();你写的这些是 sqlservler 2005 的 driver 跟 url 要换成 2000的
rs.updateInt("id", 110);
rs.insertRow();这句应当改成
while(rs.next())
{
rs.updateInt("id", 110);
rs.insertRow();}就可以了。
你的语句结构不是很清晰,
如果你要查询数据库,
你要做的就是
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());
}剩下的具体内容可以上网查一下,非常全的;
url="jdbc:sqlserver://localhost:1433;databaseName=tempdb",
user="sa",password="sa"
我这个是测试,所以没有
try {} catch ..另外,回2楼网友,我的连接字符串是对的,因为jdbc的版本问题,所以和你提供的有差别
不好意思啊,才看到大家的回复。
但是,我已经
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 有心人再帮看看吧。
谢谢先。