Rumah  >  Soal Jawab  >  teks badan

Jenis masa tarikh JDBC

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粉486138196P粉486138196297 hari yang lalu516

membalas semua(1)saya akan balas

  • P粉338969567

    P粉3389695672023-12-28 13:22:01

    Dari perspektif JDBC generik, anda boleh menggunakan lajur DatabaseMetaData .getColumns(...)DatabaseMetaData .getColumns(...), ini sepatutnya kembali:

    Dalam erti kata lain, ia harus mengandungi nama jenis data yang digunakan dalam sumber data (dalam kes anda, MySQL harus mengembalikan DATETIMEDATETIME).

    Nota: Saya sebenarnya belum mengesahkan perkara ini, jawapan saya adalah berdasarkan keperluan JDBC generik.

    balas
    0
  • Batalbalas