sql jdbc getgenickeys返回未找到列“ id”,列类型未知

我想使用插入查询来检索表中的最新更新值。

这些是我的sql表中的数据类型。

int(11)      // primary key auto increment, not being assigned by sqlQuery

varchar(30)

timestamp // has a default value. but i am explicit assigning it using CURRENT_TIMESTAMP

varchar(300)

varchar(300)

varchar(300)

int(11)

varchar(300)

   statement.executeUpdate(sqlQuery, Statement.RETURN_GENERATED_KEYS);

ResultSet rs = statement.getGeneratedKeys();

System.out.println("here: " + rs.getMetaData().getColumnCount());

System.out.println("here1: " + rs.getMetaData().getColumnName(1));

// none of the following 3 works

System.out.println("id: " + rs.getInt(1));

System.out.println("id: " + rs.getInt("GENERATED_KEY"));

System.out.println("id: " + rs.getInt("id"));

for a bit of background see [this][1]

`rs.getMetaData().getColumnTypeName(1)` tells me column type `UNKNOWN`

    SEVERE: null

java.sql.SQLException

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)

at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:815)

at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5528)

at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5448)

[1]: http://stackoverflow.com/questions/2853066/sql-java-get-value-assigned-to-auto-increment-primary-key

回答:

您需要致电rs.next()

int autoIncKeyFromApi = -1;

rs = stmt.getGeneratedKeys();

if (rs.next()) {

autoIncKeyFromApi = rs.getInt(1);

} else {

// do what you have to do

}

System.out.println(autoIncKeyFromApi);

以上是 sql jdbc getgenickeys返回未找到列“ id”,列类型未知 的全部内容, 来源链接: utcz.com/qa/398971.html

回到顶部