2014-11-04 74 views
0

我有一個表在MySQL數據庫中是2列,Mysql的-issue與preparedStatement時插入查詢

String insertquery = "INSERT INTO Table (Col1, Col2) VALUES (?, ?)"; 
PreparedStatement preparedStatement = dbConnection.prepareStatement(insertSQL); 
preparedStatement.setString(1, "Val 1"); 
preparedStatement.setString(2, "Val 2"); 
preparedStatement.executeUpdate(); 

的事情是,第二列的值決定在運行時,在何處插入值或保持默認。 如何將setString設置爲默認值。

preparedStatement.setString(2, default); 

或者我可以寫兩個單獨的sql取決於條件?有什麼辦法來處理這個senario?

更新sql的相同問題。

String updatequery = "UPDATE Table SET Col1=?, Col2=?;" 
PreparedStatement preparedStatement = dbConnection.prepareStatement(updatequery); 
preparedStatement.setString(1, "Val 1"); 
preparedStatement.setString(2, "Val 2"); 
preparedStatement.executeUpdate(); 

我能夠這樣設置 preparedStatement.setNull(2, '');

我必須保持原來的值,因爲它是不更新爲空

謝謝...

+1

你在用什麼語言?如果可能,在你的編程語言中,你可以嘗試把'null'作爲第二個參數 – 2014-11-04 12:29:57

+0

你想在col2中插入一個不變的值嗎? – baao 2014-11-04 12:38:08

+0

我使用java作爲編程語言,是想插入一個不變的值 – Sandesh 2014-11-04 12:40:51

回答

1

要做到這一點,你必須離開了列名,那麼MySQL將使用默認任何已省略的列名的值。

所以,當你想col2的值是默認的,那麼你會寫你的查詢,像這樣:

"INSERT INTO Table (Col1) VALUES (?)"; 

我覺得你最好的選擇是基於在運行時實際準備語句本身在您想要更改的列上。

我不太確定在Java中如何輕鬆完成此操作,但通過使用PHP,可以輕鬆地完成此操作,方法是擁有一個列名稱數組,並在運行時添加/刪除項目,具體取決於哪些列需要更新,然後使用PHP Implode function用逗號粘合數組中的每個項目,最後將結果串連接到最終查詢。

也許你可以通過閱讀this related stack-overflow answer來找到更適合java的解決方案。

祝你好運

+0

是的,兩個PreparedStatements並動態決定使用哪一個。 – 2014-11-04 15:31:34

+0

謝謝大家,目前我更喜歡兩個預備陳述,並動態決定使用哪一個.. – Sandesh 2014-11-04 16:55:36