クエリを作成するためにMySQLデータ型を認識するメソッドを作成しようとしていますが、何らかの理由で機能しません。ここでJDBCメタデータがmysqlデータ型を認識しない
は失敗コードです:
try(Connection con = DBConnection.getMySQLDataSourceForUpdate().getConnection();
Statement stmt = con.createStatement()){
String query = "select * from " + table;
ResultSet rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
return rsmd.getColumnType(1);
}catch(IOException e){
}catch (SQLException e){
}
さて問題は、数12が返されても、それはvarchar型を認識しないということである。
int type = meta.returnDataType(data[i], table);
if(type == 4){
preparedStatement.setString(i + 1, data[i]);
System.out.println("String går");
}if(type == 12){
preparedStatement.setInt(i + 1, Integer.parseInt(data[i]));
System.out.println("int går");
}else if(type == 92){
DateFormat formatter = new SimpleDateFormat("HH:mm");
preparedStatement.setTime(i + 1, new java.sql.Time(formatter.parse(data[i]).getTime()));
}else if(type == 93){
DateFormat formatter = new SimpleDateFormat("yyyy:MM:dd HH:mm");
preparedStatement.setTimestamp(i + 1, new java.sql.Timestamp(formatter.parse(data[i]).getTime()));
}
、ここでは私のreturnDataType
方法ですシステムアウトプリントで試してみるたびに。 if文またはswitchでそれを検出しようとすると、結果は整数だけを登録するか、すべてを整数として扱うかのいずれかです。なぜこれが当てはまるのか分かりません。
私のCSVファイルはこのようになります。最初のものはintで、2番目のものはStringです。それは少なくともそれがすべきことであり、それがデータベースにある方法です。
1,Per Lauvås
2,Per Per