2014-06-17 36 views
-2

我正在解析一些文本文件中的所有數據。通過解析它,我將所有東西都放入一個String數組中,然後使用該數組插入到我的MySQL數據庫中。大部分數據實際上是文本字符串,但有些是日期和整數。從Java插入字符串到MySQL。數據類型是如何得到的?

如果我將一個像「4538762」這樣的字符串插入定義爲INT的MySQL列中將被接受?

同樣適用於日期。

+3

如何自己嘗試一下? – pingw33n

+0

@ pingw33n是的,我會,但它不是我現在可以做的事情,所以我認爲這裏張貼會節省我一點時間。 – user3521471

+0

怎麼樣讀一下[手冊,章節類型轉換](http://dev.mysql.com/doc/refman/5.6/en/type-conversion.html)?這會爲他人節省一點時間。 – VMai

回答

1

你既可以把這個字符串作爲是:

preparedStatement.setString(1, "4538762") ; 

或將其轉換爲int並通過INT:

preparedStatement.setInt(1, Integer.parseInt("4538762")) ; 

MySQL可以處理兩者。在前一種情況下,它會將字符串解析爲int。

+0

如果您可以按原樣傳遞字符串,爲什麼要轉換它? – user3521471

+0

@ user3521471我會自己將其轉換爲檢查字符串是否有效(僅包含數字,不是太長等等)。否則,在運行帶有無法轉換爲int的字符串的語句時,您可能會從MySQL中收到一些錯誤。 – Eran

3

這取決於你如何運行你的插入。

應該作爲PreparedStatement運行它。當您使用預準備語句時,您可以根據數據類型添加值。看下面的例子。還有就是你應該檢查出一個很好的教程:http://tutorials.jenkov.com/jdbc/preparedstatement.html

String sql = "update people set firstname=? , lastname=? where id=?"; 

PreparedStatement preparedStatement = connection.prepareStatement(sql); 

preparedStatement.setString(1, "Gary"); 
preparedStatement.setString(2, "Larson"); 
preparedStatement.setLong (3, 123); 

int rowsAffected = preparedStatement.executeUpdate(); 
+0

好吧所以說我有這樣的事情: preparedStatement.setInt(1,stringArray [0])是否有效?對不起,我輸入之前一直按輸入 – user3521471

+0

適當的方式是 - > preparedStatement.setInt(1,Integer.parseInt(stringArray [0])); –

+0

另請注意,propearedStatement.setXXX()函數是基於1而不是基於0的。 –

相關問題