我想在jdbc中插入数据。我写这段代码:
int i=0;
while(i < columnCount ){
i++;
stmt_ver.setString(i, x[i] );
stmt_ver.setDate(i+1, x[i+1] );
stmt_ver.setDouble(i+2, x[i+2] );
}
但我不想写setString
,setDate
或setDouble
。我想动态地做。
我怎么能这样做?
感谢。
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以使用DatabaseMetaData
类的getColumns方法来获取列的数据类型。此方法返回ResultSet
个对象。此对象的第5列包含列的数据类型。
public int getType(Connection con, String tableName, String columnName) throws SQLException
{
DatabaseMetaData dbmd = con.getMetaData();
ResultSet rs = dbmd.getColumns(null, null, tableName, columnName);
Integer type = null;
while(rs.next())
{
type = rs.getInt(5);
}
return type;
}
假设您的数据库中有一个有效的tableName
和columnName
,ResultSet
对象理想情况下应该只包含一行。
答案 2 :(得分:0)
如果您之前未访问过数据库,则必须访问元数据。
http://docs.oracle.com/javase/6/docs/api/java/sql/Connection.html#getMetaData()
获得列定义:
为每个列读取类型并从DB列类型到Java类型进行一些映射。 这基本上就是ORM(比如Hibernate)正在做的事情。