Rumah > Soal Jawab > teks badan
Saya mempunyai nilai DATETIME
列。我使用 ResultSet
元数据来检索列类型,它返回 TIMESTAMP
这是不正确的。如何获取此列的正确 java.sql.SQLType
dalam pangkalan data MySQL?
Saya akan cuba lebih spesifik. Saya mentakrifkan struktur pangkalan data menggunakan kod Java. Contohnya;
Column TITLE = new Column(JDBCType.VARCHAR).size(100).title("Created");
Kemudian kod pengesah kecil saya mencipta lajur ini (dengan mengandaikan jadual ditakrifkan di sana). Kemudian jika saya mengubah suai kod ini kepada
Column TITLE = new Column(JDBCType.VARCHAR).size(200).title("Created");
Pengesah kecil saya menukar saiz lajur kepada 200. Untuk melakukan ini, saya mendapatkan semula metadata sebagai
DatabaseMetaData metaData = connection.getMetaData();
Kemudian akses sifat lajur
ResultSet resultSet = metaData.getColumns(getCatalog(), schema, table, columnName);
Ini akan mengembalikan kelas JDBCType
枚举。假设我在 MySQL DATETIME
列上运行此查询。我确实知道在Java中没有这样的东西,它的等价物是 java.sql.Timestamp
. Tetapi dalam MySQL, DATETIME bukan TIMESTAMP.
Bagaimana untuk membezakan MySQL DATETIME
和MySQL TIMESTAMP
dalam kod Java?
P粉3389695672023-12-28 13:22:01
Dari perspektif JDBC generik, anda boleh menggunakan lajur DatabaseMetaData .getColumns(...)
, ini sepatutnya kembali: DatabaseMetaData .getColumns(...)
Dalam erti kata lain, ia harus mengandungi nama jenis data yang digunakan dalam sumber data (dalam kes anda, MySQL harus mengembalikan DATETIME
DATETIME
).
Nota: Saya sebenarnya belum mengesahkan perkara ini, jawapan saya adalah berdasarkan keperluan JDBC generik.