Recordset.getObject("sample")为什么会出错?(100分)

  • 主题发起人 主题发起人 dingyuan
  • 开始时间 开始时间
D

dingyuan

Unregistered / Unconfirmed
GUEST, unregistred user!
我不知道大家是否也会经常遇上这样的问题,我经常会发生:
首先定义一下
<%
Driver DriverRecordset1 = (Driver)Class.forName(MM_test_DRIVER).newInstance();
Connection ConnRecordset1 = DriverManager.getConnection(MM_test_STRING,MM_test_USERNAME,MM_test_PASSWORD);
PreparedStatement StatementRecordset1 = ConnRecordset1.prepareStatement("{call dbo.getexam}@sort='a'");
ResultSet Recordset1 = StatementRecordset1.executeQuery();
boolean Recordset1_isEmpty = !Recordset1.next();
boolean Recordset1_hasData = !Recordset1_isEmpty;
Object Recordset1_data;
int Recordset1_numRows = 0;
%>
中间会有一段别的程序,如HTML语句。当引用上面的Recordset时有时候就会错,
<td><%=(((Recordset1_data = Recordset1.getObject("no"))==null || Recordset1.wasNull())?"":Recordset1_data)%></td>
<td><%=(((Recordset1_data = Recordset1.getObject("exam"))==null || Recordset1.wasNull())?"":Recordset1_data)%></td>
注意我说的是有时候,并不总是这样.错误提示如下:
java.sql.SQLEXception:[Microsoft][ODBS SQL Sever Driver]无效的描述符索引
如果编译能通过,就没有问题了,但如果通不过就总也通不过,好象与先后顺序有关,谁
来助我。
 
你用的是什么驱动?
取值时的次序与table中列的次序一样吗?
 
对不起的是,我上次把原代码已经上去了,但却没有去掉《%%》,所以没有显示出来,
这次再发一次代码。
Driver DriverRecordset1 = (Driver)Class.forName(MM_test_DRIVER).newInstance();
Connection ConnRecordset1 = DriverManager.getConnection(MM_test_STRING,MM_test_USERNAME,MM_test_PASSWORD);
PreparedStatement StatementRecordset1 = ConnRecordset1.prepareStatement("SELECT * FROM dbo.DESIGN");
ResultSet Recordset1 = StatementRecordset1.executeQuery();
boolean Recordset1_isEmpty = !Recordset1.next();
boolean Recordset1_hasData = !Recordset1_isEmpty;
Object Recordset1_data;
int Recordset1_numRows = 0;
我用的是jdbc-odbc,取数据时当然不可能一定要按照TABLE的次序取。其实再另一种情况
下,有是也出现同样的错误,就是你已经取过一次数据RecoreSet.getObject("sample")
后,在同一页面再取一次就会错误。如果用变量取一次数据,以后都用变量就没有问题了。
麻烦大家了。
 
这些情况都是jdbc-odbc桥的问题,换成纯的JDBC驱动就可以了
 
请发给我个JDBC FOR SQL SERVER ,谢了。dingyuan@21cn.com
 
如果有thin-JDBC-for-Sql Server.请通知我。我现在要处理这个问题。
riverhorse@263.net
 
接受答案了.
 
后退
顶部