2012-12-03 47 views
0

我想知道什么输入参数引用setNull和setInt方法在下面的代码片段。什么是参数索引。什么是SQL类型,以及如何从数据库列/数据中确定?有人可以告诉我什么是setNull和setInt在这个声明

公共无效testQUERY_UPDATEPORTFOLIO()抛出异常{

UnitTestHelper helper = new UnitTestHelper(); 
    Connection con = helper.getConnection(helper.sourceDBUrl); 
    Connection conTarget = helper.getConnection(helper.targetDBUrl); 

    PreparedStatement stmt = con.prepareStatement(TRScheduleStatusCalculator.QUERY_UPDATEPORTFOLIO); 
    stmt.setNull(1,Types.INTEGER); 
    stmt.setInt(2,2290); 
    ResultSet sourceVal = stmt.executeQuery(); 

    stmt = conTarget.prepareStatement(TRScheduleStatusCalculator.QUERY_UPDATEPORTFOLIO); 
    stmt.setNull(1,Types.INTEGER); 
    stmt.setInt(2,2290); 
    ResultSet targetVal = stmt.executeQuery(); 


    assertTrue(helper.resultSetsEqual(sourceVal,targetVal)); 

} 

回答

0

PreparedStatement.setnull(paraIndex, SQLType)设置SQL VARCHAR类型指定的占位符。 stmt.setInt(2,2290);在第2个占位符处设置一个int值2290。

+0

因此,QUERY WAS – Croeber

+0

从tr_request中选择requestid,methodid,workplanid,requiredstart,requiredend其中fundingportfolioid =?“+”和requestid <>? _______________________________________________________________________因此,第一个参数1(1,Types.INTEGER)用于portfolioid。第二个参数2(2,290)用于requestid。那是对的吗。无论哪里?标记是? – Croeber

+0

是的,从你上面的查询多数民众赞成正确:) – PermGenError

0

setNull方法允许一个JDBC/SQL NULL值发送到数据库中作为一个IN参数。

看到这个thread了解更多

0

的的setNull()调用将给空的到的值第一个占位符。

setInt()调用为第二个占位符提供了2290的值。

您需要检查QUERY_UPDATEPORTFOLIO以查找占位符(问号)以确定它们在数据库中对应的内容。

+0

“占位符”是什么意思,列,行,或两者? – Croeber

+0

@ user1865053这是查询中的问号,例如'insert into mytable(col1,col2,col3,col4)values(?,?,?,?)'。它是条件的列或值,例如'... where id =?' – Bohemian

相关问题