最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JDBC中使用Java8的日期LocalDate和LocalDateTime操作mysql、postgresql

 更新時間:2017年09月06日 11:08:57   作者:西夏一品堂  
這篇文章主要給大家介紹了關于JDBC中如何使用Java8的日期LocalDate和LocalDateTime的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

相信大家應該都知道,在實體Entity里面,可以使用java.sql.Date、java.sql.Timestamp、java.util.Date來映射到數(shù)據(jù)庫的date、timestamp、datetime等字段

但是,java.sql.Date、java.sql.Timestamp、java.util.Date這些類都不好用,很多方法都過時了。

Java8里面新出來了一些API,LocalDate、LocalTime、LocalDateTime 非常好用

如果想要在JDBC中,使用Java8的日期LocalDate、LocalDateTime,則必須要求數(shù)據(jù)庫驅動的版本不能低于4.2

下面將分別演示如何在JDBC中使用Java8的日期LocalDate、LocalDateTime來操作mysql,postgresql,話不多說了,來一看看詳細的介紹吧。

一:MySQL

首先創(chuàng)建表:

create table tb_java8date (id int not null primary key auto_increment,t_date date, t_time time, t_datetime datetime);

然后,加入mysql的驅動

<dependency> 
 <groupId>mysql</groupId> 
 <artifactId>mysql-connector-java</artifactId> 
 <version>5.1.37</version> 
</dependency> 

上面說了,數(shù)據(jù)庫驅動的版本不能低于4.2,如何判斷呢?

直接打開數(shù)據(jù)庫驅動jar,里面有個META-INF/MANIFEST.MF文件

注意這里,必須要至少是4.2

JDBC代碼如下:

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.time.LocalDate; 
import java.time.LocalDateTime; 
import java.time.LocalTime; 
 
public class App { 
 public static void main(String[] args) throws Exception { 
  Class.forName("com.mysql.jdbc.Driver"); 
  Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.1.100:3306/db_java8","root","root123"); 
  PreparedStatement st = conn.prepareStatement("insert into tb_java8date (t_date,t_time,t_datetime)values(?,?,?)"); 
  st.setObject(1, LocalDate.now()); 
  st.setObject(2, LocalTime.now()); 
  st.setObject(3, LocalDateTime.now()); 
  st.execute(); 
  st.close(); 
  conn.close(); 
 } 
} 

運行,查詢數(shù)據(jù)庫

mysql> select * from tb_java8date;
+----+------------+----------+---------------------+
| id | t_date  | t_time | t_datetime   |
+----+------------+----------+---------------------+
| 1 | 2016-11-13 | 11:34:31 | 2016-11-13 11:34:31 |
+----+------------+----------+---------------------+
1 row in set (0.00 sec)

看到已經成功插入到數(shù)據(jù)庫中去了

如果你使用的mysql-connector-java版本低于5.1.37,則數(shù)據(jù)庫的驅動版本低于4.2,運行會報如下錯誤:

Exception in thread "main" com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: '\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B"H\xB2\x0C\x00\x00xpw\x07\x03\x00\x00\x07\xE0\x0B\x0Dx' for column 't_date' at row 1 
 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3845) 
 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783) 
 at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2447) 
 at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2594) 
 at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545) 
 at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1901) 
 at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1193) 
 at com.pp.App.main(App.java:18) 

二:PostgreSQL

首先創(chuàng)建表:

create table tb_java8date (id SERIAL not null primary key,t_date date, t_time time, t_datetime timestamp);

然后,加入PostgreSQL的數(shù)據(jù)庫驅動

<dependency> 
 <groupId>org.postgresql</groupId> 
 <artifactId>postgresql</artifactId> 
 <version>9.4.1212</version> 
</dependency> 

注意這里添加的數(shù)據(jù)庫驅動版本最低要是4.2,檢驗方法和上面類似

JDBC代碼如下:

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.time.LocalDate; 
import java.time.LocalDateTime; 
import java.time.LocalTime; 
 
public class App { 
 public static void main( String[] args ) throws Exception { 
  Class.forName("org.postgresql.Driver"); 
  Connection conn = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/pg_java8","admin","123456"); 
  PreparedStatement st = conn.prepareStatement("insert into tb_java8date (t_date,t_time,t_datetime)values(?,?,?)"); 
  System.out.println(st.getClass()); 
  st.setObject(1, LocalDate.now()); 
  st.setObject(2, LocalTime.now()); 
  st.setObject(3, LocalDateTime.now()); 
  st.execute(); 
  st.close(); 
  conn.close(); 
 } 
} 

運行,然后查詢數(shù)據(jù)庫表

發(fā)現(xiàn),已經成功執(zhí)行

如果你加入的依賴,數(shù)據(jù)庫的驅動版本低于4.2,運行會報如下錯誤:

Exception in thread "main" org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of java.time.LocalDate. Use setObject() with an explicit Types value to specify the type to use. 
 at org.postgresql.jdbc.PgPreparedStatement.setObject(PgPreparedStatement.java:1051) 
 at com.pp.App.main(App2.java:16) 

以上只是演示了mysql,postgresql兩個數(shù)據(jù)庫,其他的數(shù)據(jù)庫,請自行測試。我這里就不演示了,方法都類似。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • Java編程—在測試中考慮多態(tài)

    Java編程—在測試中考慮多態(tài)

    這篇文章主要介紹了Java編程—在測試中考慮多態(tài),具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Response.AddHeader案例講解

    Response.AddHeader案例講解

    這篇文章主要介紹了Response.AddHeader案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • SpringBoot+MybatisPlus實現(xiàn)sharding-jdbc分庫分表的示例代碼

    SpringBoot+MybatisPlus實現(xiàn)sharding-jdbc分庫分表的示例代碼

    本文主要介紹了SpringBoot+MybatisPlus實現(xiàn)sharding-jdbc分庫分表的示例代碼,以分庫,分表,分庫分表三種方式來實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Java線程池中的Future實現(xiàn)詳解

    Java線程池中的Future實現(xiàn)詳解

    這篇文章主要介紹了Java線程池中的Future實現(xiàn)詳解, FutureTask是一個任務,FutureTask繼承了Runnable、Callable, 通過FutureTask可以獲取到任務執(zhí)行的狀態(tài),任務執(zhí)行完成完成后,將結構通過Future接口返回,調用者可以調用Future#get()方法獲取到數(shù)據(jù),需要的朋友可以參考下
    2023-10-10
  • Java調用DeepSeek?api實現(xiàn)方法記錄

    Java調用DeepSeek?api實現(xiàn)方法記錄

    這篇文章主要介紹了如何在Java中調用DeepSeek?API,包括在官網獲取APIKeys、創(chuàng)建API請求工具類以及處理返回結果的步驟,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • 一文揭曉如何在Java中終止一個線程

    一文揭曉如何在Java中終止一個線程

    工作中我們經常會用到線程,一般情況下我們讓線程執(zhí)行就完事了,那么你們有沒有想過如何去終止一個正在運行的線程呢?本文就來帶大家一起看看
    2023-03-03
  • Java 中Json中既有對象又有數(shù)組的參數(shù)如何轉化成對象(推薦)

    Java 中Json中既有對象又有數(shù)組的參數(shù)如何轉化成對象(推薦)

    Gson庫是一個功能強大、易于使用的Java序列化/反序列化庫,它提供了豐富的API來支持Java對象和JSON之間的轉換,這篇文章主要介紹了Java 中Json中既有對象又有數(shù)組的參數(shù)如何轉化成對象,需要的朋友可以參考下
    2024-07-07
  • mybatis查詢SqlServer慢問題及解決

    mybatis查詢SqlServer慢問題及解決

    這篇文章主要介紹了mybatis查詢SqlServer慢問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java線程中的Timer和TimerTask原理詳解

    Java線程中的Timer和TimerTask原理詳解

    這篇文章主要介紹了Java線程中的Timer和TimerTask原理詳解,Timer和TimerTask成對出現(xiàn),Timer是定時器,TimerTask是定時任務,換句話說,定時任務TimerTask是給定時器Timer執(zhí)行的具體任務,需要的朋友可以參考下
    2023-10-10
  • Java基礎之方法重寫和多態(tài)示例

    Java基礎之方法重寫和多態(tài)示例

    這篇文章主要介紹了Java基礎之方法重寫和多態(tài),結合實例形式分析了java方法重寫和多態(tài)的相關原理與使用技巧,需要的朋友可以參考下
    2019-08-08

最新評論

麻江县| 钟祥市| 柳江县| 积石山| 新津县| 合江县| 本溪| 庆安县| 房产| 定州市| 保定市| 台州市| 大田县| 古丈县| 麦盖提县| 资源县| 娄底市| 兴安县| 噶尔县| 康乐县| 志丹县| 乌兰县| 铁力市| 彭阳县| 麟游县| 东兰县| 察雅县| 竹山县| 泰兴市| 和硕县| 马山县| 延寿县| 西盟| 富宁县| 嘉禾县| 敦化市| 沽源县| 内江市| 崇仁县| 宝山区| 余庆县|