2012-12-03 82 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

相關問題