2012-05-21 36 views
1

我在java編程中遇到了寫入更新sql/oracle命令的問題。我的數據庫是oracle。我曾嘗試過這種方法,但它不起作用。沒有更新發生。任何人都請在這方面幫助我?如何在java編程中寫入更新sql命令

conn = ds.getConnection(); 

String updateQ = "update ANI_999 set First_Name='d.getName()',HouseNo='d.getAddr1()',StreetName='d.getAddr2()',AppartmentSuite='d.getAddr3()',Town_City='d.getTownCity()',State='d.getState()',Postal_Code='d.getPostalCd()',Country='d.getCountry()' where CALLER_ID = 'msisdn'"; 

stmt = conn.prepareStatement(updateQ); 
int result = stmt.executeUpdate(updateQ); 

conn.commit(); 
conn.close(); 
+0

爲了更好地幫助越早,張貼[SSCCE](http://sscce.org/ )。在SSCCE中,我們可以看到異常輸出發生了什麼。 –

+0

對不起,什麼是SSCCE?..我以前沒有聽說過。感謝您的關注.. :) –

+0

檢查'executeUpdate'返回的結果?捕獲/日誌'SQLException'? –

回答

0

試試這個,

conn.setAutoCommit(true); 

,並

Statement st = conn.createStatement(); 

和查詢最終,

String updateQ = "update ANI_999 set First_Name='d.getName()',HouseNo='d.getAddr1()',StreetName='d.getAddr2()',AppartmentSuite='d.getAddr3()',Town_City='d.getTownCity()',State='d.getState()',Postal_Code='d.getPostalCd()',Country='d.getCountry()' where CALLER_ID = 'msisdn'"; 

if(st.execute(updateQ)) { 
    System.out.println("UPDATE! SUCCESS"); 
} 

我希望幫你。

+0

SQL格式錯誤。檢查@mprabhat建議 –

+0

感謝您的幫助,但我不能使用此命令conn.setAutoCommit(true);它說我應該先申報。我應該聲明什麼?..任何幫助請..感謝您的注意.. :) –

4
update ANI_999 set First_Name='d.getName()',HouseNo='d.getAddr1()',StreetName='d.getAddr2()',AppartmentSuite='d.getAddr3()',Town_City='d.getTownCity()',State='d.getState()',Postal_Code='d.getPostalCd()',Country='d.getCountry()' where CALLER_ID = 'msisdn' 

First_Name='d.getName()'將被執行,因爲它是不會從你的方法d.getName()用價值來代替,同樣,對於所有其他領域。

相反試試這個:

String query = "update ANI_999 set first_name = ? where caller_id = 'msisdn'"; 

PreparedStatement pstmt = conn.prepareStatement(query); 
pstmt.setString(1, d.getName()); 

int result = pstmt.executeUpdate(); 
+0

它不工作,當我嘗試打印結果的值,它顯示此錯誤「無效的列索引」..任何幫助建議請:) .. –

+0

我曾試過這個>> pstmt.setString(1,d.getName());但我得到的結果的值是0..means其不更新任何東西。我該怎麼辦? –

+0

第一個錯誤是因爲我的錯誤,我已經把你已解決的報價放在1左右,第二個你可以檢查'select * from ANI_99',其中caller_id ='msisdn''返回任何東西 – mprabhat

0

只是爲了完成mprabhat回答你應該使用類似

String query = "update ANI_999 set first_name = ? where caller_id = ?"; 

PreparedStatement pstmt = conn.prepareStatement(query); 
pstmt.setString(1, d.getName()); 
pstmt.setString(2, msisdn); 

int result = pstmt.executeUpdate(); 
conn.commit() // in case no autocommit is set.