2010-11-09 31 views
0

我想知道我們是否可以將存儲過程調用中的java對象作爲參數傳遞。這裏是我的Java代碼,我已經使用存儲過程調用。請幫我找到這個在存儲過程中調用java對象作爲參數

public void addPatientInfo(PatientInfo patientInfo) throws SQLException 
{ 
    CallableStatement cst = null; 

    try { 
     logger.info("Enter addPatientInfo"); 
     dbConnection = DbConnectionImpl.getDbConnection(dbConnInfo); 
     dbConnection.setAutoCommit(false); 
     cst = dbConnection.prepareCall("{ call add_patient(?,?,?,?,?,?,?,?,?,?) }"); 

     cst.setInt(1, patientInfo.getSalutationType().getSalutationTypeId()); 
     cst.setString(2, patientInfo.getFirstName()); 
     cst.setString(3, patientInfo.getMiddleName()); 
     cst.setString(4, patientInfo.getLastName()); 
     cst.setString(5, patientInfo.getGender()); 
     cst.setString(6, patientInfo.getDob()); 
     cst.setString(7, patientInfo.getOccupation()); 
     cst.setInt(8, ApplicationConstants.OWNER_TYPE_PATIENT); 
     cst.setString(9, patientInfo.getEducation()); 
     cst.setString(10,patientInfo.getPatientIdentityNo()); 

     cst.execute(); 
     dbConnection.commit(); 
    } 
+0

有沒有任何方法可以將addInpatient存儲過程調用中的patientInfo作爲參數傳遞? – yopirates 2010-11-09 05:40:54

回答

0

解決這聽起來像你問,如果你能做到這一點:

cst = dbConnection.prepareCall("{ call add_patient(?,?,?,?,?,?,?,?,?,?) }"); 
cst.setObject(1, patientInfo); 

在獲取準備好的聲明的意義,知道分配給什麼性質什麼數據庫字段,那麼答案是否定的。

雖然PreparedStatement類實際上有一個setObject()。但它專注於產生特定產出的特定範圍的可接受類別。 Java bean不在該列表中。

+0

不。我想知道我們是否可以像傳喚add_patient(patientInfo)那樣傳遞patientInfo,在那裏我可以從數據庫中獲得所有的爭論。這是一種正確的技術。還是有任何方法可以做這樣的事情 – yopirates 2010-11-09 06:21:41

相關問題