【发布时间】:2018-04-30 14:55:21
【问题描述】:
我正在尝试创建一种方法来识别 MySQL 数据类型以创建查询,但由于某种原因它不起作用。
下面是失败的代码:
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 方法:
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){
}
现在的问题是它无法识别 varchar,即使我每次尝试使用系统输出打印时都会返回数字 12。当我尝试使用 if 语句或 switch 来检测它时,结果要么它们只注册整数,要么将所有内容都视为整数。我似乎不明白为什么会这样。
我的 CSV 文件是这样的,第一个是 int,第二个是 String。至少它应该是这样,在数据库中也是这样。
1,Per Lauvås
2,Per Per
【问题讨论】: