Java 检索结果集时出错
我试图从Java中的一个过程中检索resultset,但我无法这样做。虽然我通常很容易检索resultset,但这次遇到了空指针异常 以下是我的sql server 2008过程:Java 检索结果集时出错,java,sql,sql-server-2008,Java,Sql,Sql Server 2008,我试图从Java中的一个过程中检索resultset,但我无法这样做。虽然我通常很容易检索resultset,但这次遇到了空指针异常 以下是我的sql server 2008过程: ALTER PROCEDURE [dbo].[SSSMLTransaction] @acid int,@subacid int AS BEGIN CREATE TABLE trans ( Vtype varchar(10),Vno varchar(5),Vdate date,Narr varchar(50),dr
ALTER PROCEDURE [dbo].[SSSMLTransaction]
@acid int,@subacid int
AS
BEGIN
CREATE TABLE trans ( Vtype varchar(10),Vno varchar(5),Vdate date,Narr varchar(50),dr numeric(13,2),cr numeric(13,2),DCIND varchar(1));
insert into trans(Vtype,Vno,Vdate,Narr,dr,cr,DCIND)
(select 'Cash',cd.V_no,cv.VDate,cv.Narr1,cd.Debit,cd.Credit,cd.DCIND from CVDetail cd join CashVoucher cv on cd.V_no=cv.Vno where
cd.ANO=@acid and cd.Party_Code=@subacid) ;
select * from trans;
drop table trans;
END
下面是我的Java函数:
CallableStatement cs = conn.prepareCall("{call SSSMLTransaction(?,?)}");
cs.setInt(1, acid);
cs.setInt(2, prtyid);
cs.execute();
rs=cs.getResultSet();
但是我得到了一个空的结果集。试试:
ResultSet rs = cs.executeQuery();
从过程中检索数据的最佳方法如下:
public static void executeProcedure(Connection con) {
try {
CallableStatement stmt = con.prepareCall(...);
..... //Set call parameters, if you have IN,OUT, or IN/OUT parameters
boolean results = stmt.execute();
int rsCount = 0;
//Loop through the available result sets.
while (results) {
ResultSet rs = stmt.getResultSet();
//Retrieve data from the result set.
while (rs.next()) {
....// using rs.getxxx() method to retieve data
}
rs.close();
//Check for next result set
results = stmt.getMoreResults();
}
stmt.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
在您的例子中,我假设没有基于SQL查询返回的数据。cs.execute()返回什么?是真是假?我不知道在你读取结果集之前删除表会有什么效果,我觉得很可疑。cs.execute返回false@gimby即使我删除了那一行,仍然会产生相同的错误@NickJby这样做会产生错误:语句没有返回结果集我不理解你的错误。为什么它不给出结果集?这就是我想要的:(