我正在創建一個動態 Web 應用程式,我必須使用 Java、HTML 和 MySQL。我在使用 UUID 型別時遇到問題。
SQL表如下:
CREATE TABLE `logs` (
`uuid` char(40) COLLATE utf8_unicode_ci NOT NULL,
`title` char(128) COLLATE utf8_unicode_ci DEFAULT NULL,
`content` text COLLATE utf8_unicode_ci,
`createTimestamp` date DEFAULT NULL,
PRIMARY KEY (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
我有一個標準的 Log 類,每個變數都有 getter/setter。
我有一個將日志插入資料庫的 applicationDAO 類 - 作業正常,但我必須將 UUID 轉換為字串才能將所有欄位都放入資料庫。
public int insertLog(TextLog log) throws SQLException {
int rows = 0;
try {
connection = DBConnection.getConnectionToDatabase();
PreparedStatement ps = connection.prepareStatement(INSERT_LOG_SQL);
ps.setObject(1, log.getUUID().toString());
ps.setString(2, log.getTitle());
ps.setString(3, log.getContent());
ps.setObject(4, java.sql.Date.valueOf(java.time.LocalDate.now()));
rows = ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return rows;
}
現在問題出在我嘗試將 SQL 表存盤到陣列中時。
@Override
public List<TextLog> listLogs() {
TextLog log = null;
List<TextLog> tl = new ArrayList<>();
try {
connection = DBConnection.getConnectionToDatabase();
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery(SELECT_ALL_LOGS);
while (rs.next()) {
log = new TextLog();
log.setUUID(rs.getObject("uuid", java.util.UUID.class));
log.setTitle(rs.getString("title"));
log.setContent(rs.getString("content"));
log.setDate(rs.getDate("createTimestamp"));
}
} catch (Exception e) {
e.printStackTrace();
}
return tl;
}
因為 SQL 中的欄位是 char(40),所以它沒有將它作為 UUID 讀取,我收到以下錯誤: java.sql.SQLException: Conversion not supported for type java.util.UUID
請記住,我必須保持欄位不變并且無法調整。
關于如何解決此錯誤的任何想法?
提前致謝,
uj5u.com熱心網友回復:
獲取字串,然后將其轉換為 UUID:
log.setUUID(java.util.UUID.fromString(rs.getString("uuid")));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/425130.html
