在SQL Server中,怎样声明才不是只读(read only)游标?

我声明的游标不能实现更新数据——执行update命令总说是只读(read only)游标不支持for update。不知错在哪里?(表recnumb中只有一列x1)
Declare @z int
Declare Rec Cursor
For select x1 from recnumb order by x1 desc
for update of x1
Open Rec
declare @i smallint
set @i=1
Fetch absolute 3 from Rec into @z
update recnumb set x1=24 Where Current of rec
deallocate Rec

我在声明语句的"cursor"后面填上scroll或scroll_locks、dynamic等,错误相同,为什么?怎么改才对?
尽管以前连过,这次仍花费了N多时间查资料,配置,现在把详细步骤贴给大家,分享之。

一,JDBC-ODBC桥的方法,这种方法最简单了。

1,新建一个数据库,为student吧,再在其中新建一张表命名为info,添加一些数据(方便观察效果),下面我们配置数据源
开始----控制面板----管理工具----数据源-----添加----选中“SQL Server”----完成
把默认的数据库改为student。点“下一步”----完成----“测试数据源”,如果提示成功,OK,数据源配置好了!代码如下:import java.sql.*;

public class q
{
public static void main(String[] args)
{
String sql;
Connection conn;
Statement stmt;
ResultSet rs;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:student";
String user="sa";
String password="";
conn= DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
sql="select * from info";
rs=stmt.executeQuery(sql);
while(rs.next())
{
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
}
rs.close();
stmt.close();
conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}编译运行如图:上面的结枝谈握果是我info里面的字段。OK?成功了吧?二,JDBC连接1,下载jdbc:
下载:SQL Server 2000 SP3,同样到Microsoft的网站去下载侍慎升级包,~~~~~~~~~~~~~~~~~~关键开始~~~~~~~~~~~~~~~~~~~~,下载其中的chs_sql2ksp3.exe,注意下猛庆载下来的是chs_sql2ksp3.exe文件,双击它选择安装到一个目录时是在解压,然后你还要到那个目录下双击setup.bat批处理文件才是开始安装(应该说是升级)!!!具体下载地址是:
~~~~~~~~~~~~~~~~~~~~关键结束~~~~~~~~~~~~~~~~~~~~~~~~~注:我一直是这个原因,装错补订了,我曾经装过SP3a,SP4,结果都不行!2,安装JDBC,把其安装目录下的lib下的三个文件添加到classpath中,这个网上都有很多。我的是:C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar;添加完成后,安装SP3补订,也就是刚才下的那个文件,可能需要重启,我给忘了。3,现在就是代码了,如下:import java.sql.*;public class L
{
public static void main(String[] args)
{
String sql;
Connection conn;
Statement stmt;
ResultSet rs;
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student";
String user="sa";
String password="";
conn= DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
sql="select * from info";
rs=stmt.executeQuery(sql);
while(rs.next())
{
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
}
rs.close();
stmt.close();
conn.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
似乎是for update of x1
这句不要试试
改用 oracle