国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【Java學習】JDBC數據類型

Vixb / 1952人閱讀

摘要:通過這個驅動程序,我們就能夠兩個數據類型的相互轉化了。和和方法可以將特定的類型轉換為特定的數據類型。和可以將幾乎任何數據類型映射到數據類型。時間與日期類型類映射到類型,和類分別映射到和數據類型。

概述

我們知道Java的數據類型和數據庫中的類型并不是一一對應的,我們在使用JDBC在與數據庫進行交互的時候,比如我們向數據庫中插入一條數據,或者從數據庫中查詢一個數據,為什么我們能夠正常的讀取呢?那是因為存在著一個對應關系或者是一個映射關系。

通過這個JDBC驅動程序,我們就能夠兩個數據類型的相互轉化了。

映射表

下表總結了當調用PreparedStatement或者CallableStatement對象或者ResultSet.updateXXX()方法和setXXX()方法時,將Java數據類型轉換為默認的jDBC數據類型/Java類型。

setXXXupdateXXX()

setXXX()updateXXX()方法可以將特定的Java類型轉換為特定的JDBC數據類型。在結果集ResultSet已經總結過。

setObject()updateObject()可以將幾乎任何java數據類型映射到JDBC數據類型。

時間與日期類型

java.sql.Date類映射到SQLDATE類型,java.sql.Time和java.sql.Timestamp類分別映射到SQLTIME和SQLTIMESTAMP數據類型。

下面實例顯示了如何格式化為標準java日期和時間

import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.*;

public class sqlDateTime{
    public static void main(String[] args){
        //得到標準的日期和時間
        java.util.Date javaDate = new java.util.Date();
        long javaTime = javaDate.getTime();
        System.out.println("The java Date is:"+javaDate.toString());
        
        //得到并顯示SQL日期
        java.sql.Date sqlDate = new java.sql.Date(javaTime);
        System.out.println("The SQL DATE is:" + sqlDate.toString());
        
        //得到并顯示Sql時間
        java.sql.Time sqlTime = new java.sql.Time(javaTime);
        System.out.println("The SQL TIME is:" + sqlTime.toString());
        
        //得到并且顯示SQL時間戳
        java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(javaTime);
        System.out.println("The SQL TIMESTAMP is :" + sqlTimestamp.toString());
        
    
    
    }

}

結果:

F:workspjdbc>javac SqlDateTime.java

F:workspjdbc>java SqlDateTime
The Java Date is:Wed May 31 23:54:57 CST 2017
The SQL DATE is: 2017-05-31
The SQL TIME is: 23:54:57
The SQL TIMESTAMP is: 2017-05-31 23:54:57.937

F:workspjdbc>
處理NULL值

對于Sql和hava而言,兩個null值的含義不一樣。
SQL中的NULL值是遺漏的未知數據
而Java中代表著是空值,是一種特殊的值,它可以是任何數據類型的默認值。

所以要在Java中處理SQL的NULL該如何做呢?
先看一下下面的實例:

Statement stmt = conn.createStatement();
String sql = "SELECT id,first,last,age FROM Employees";
ResultSet rs = stmt.excuteQuery(sql);

int id = rs.getInt(1);
if(rs.wasNull()){
    id = 0;
}

由上面可以看出,直接使用get()方法,可能獲取到NULL值,這個時候,resultSet對象有一個wasNull()方法,來測試是不是NULL值。

下面來細細的總結一下如何詳細的處理NULL值。

從數據庫中讀取到的NULL
第一種方法

判斷通過get方法獲取到的值可以使用==比較符。看下面的例子

String mgrno = rs.getString(1);  
if (mgrno== null)  { 
    System.out.println ("
 MGRNO isnull 
");
    
}  

可以看出獲取String類型,如果是NULL的話,會直接轉換為null值,但是這并不是總是奏效,因為使用getInt()getShort()接收值時,若值為SQL NULL,會自動轉換成0

第二種方法

前面已經見識到了,Resultset對象提供了一個wasNull()檢測。
例子看之前的。

向數據庫中傳入NULL值

首先往數據庫里傳入值會有兩種方式,一種是使用結果集的UpdateXXX()方法,另一種是使用結果集的Set方法,也可以通過Statement,執(zhí)行UPDATE SQL語句,但大體來說都一樣。

第一種方法
同樣的,對于String等類型而言是可以通過null直接賦值,如setXXX(1,null)。
但是同理,如果對于setInt(1,null)或是setFloat(1,null)、setShort(1,null)時都無法通過編譯

也就是說只有當類型為java對象時可以執(zhí)行成功.

第二種方法

受第一種的啟發(fā),我們可以在創(chuàng)建Statement SQL語句時,就可以直接設置成NULL啊,確實可以,但是這種方式不夠靈活,萬一我設置NULL值呢?下次還得寫一遍。

第三種方法
同樣的PreparedStatement對象同樣提供了一個setNull()方法,來專門賦NULL值。

例子:

PreparedStatement pstmt = null;  

sql = "UPDATE EMP SET EDLEVEL = ? "  + " WHERE EMPNO = "0000110" ";  
pstmt = con.prepareStatement(sql);  

if ( some condition )  {
    pstmt.setNull (1,java.sql.Type.SMALLINT); 
}  

else  { 
    pstmt.setShort( 1, 16 ); 

}  
updateCount = pstmt.executeUpdate();  

其中第二個參數是參數類型,要使用SQL中的類型。

參考資料

易百教程
JDBC處理NULL值

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76350.html

相關文章

  • Java學習JDBC學習(了解CLass等)

    摘要:同時也有一些兒高級的處理,比如批處理更新事務隔離和可滾動結果集等。連接對象表示通信上下文,即,與數據庫中的所有的通信是通過此唯一的連接對象。因為是針對類的關系而言,所以一個對象對應多個類的實例化。返回表示查詢返回表示其它操作。 JDBC是什么? JDBC是一個Java API,用中文可以通俗的解釋為,使用Java語言訪問訪問數據庫的一套接口集合。這是調用者(程序員)和實行者(數據庫廠商...

    cjie 評論0 收藏0
  • Mybatis學習筆記

    摘要:學習筆記有官方的中文開發(fā)文檔并且針對使用者比較友好是一款優(yōu)秀的持久層框架,它支持定制化存儲過程以及高級映射。它只和配置有關,存在的意義僅在于用來減少類完全限定名的冗余,為了簡化中的書寫。 Mybatis學習筆記 mybatis有官方的中文開發(fā)文檔并且針對使用者比較友好:http://www.mybatis.org/mybatis-3/zh/ MyBatis 是一款優(yōu)秀的持久層框架,它支...

    jsyzchen 評論0 收藏0
  • 幾個數據持久化框架Hibernate、JPA、Mybatis、JOOQ和JDBC Template的

    摘要:不管是還是,表之間的連接查詢,被映射為實體類之間的關聯(lián)關系,這樣,如果兩個實體類之間沒有實現(xiàn)關聯(lián)關系,你就不能把兩個實體或者表起來查詢。 因為項目需要選擇數據持久化框架,看了一下主要幾個流行的和不流行的框架,對于復雜業(yè)務系統(tǒng),最終的結論是,JOOQ是總體上最好的,可惜不是完全免費,最終選擇JDBC Template。 Hibernate和Mybatis是使用最多的兩個主流框架,而JOO...

    xietao3 評論0 收藏0
  • [JAVA][學習·練手·挖坑] 做個數據庫幫助庫雛形 · 二

    摘要:事實上,實現(xiàn)了接口,而也實現(xiàn)了接口。還記得之前說的,使用之后,其返回的實際上是一個裝飾器嗎。所以修改如下是默認全局工廠名稱,請使用別的名稱工廠已經配置完成,請不要重復配置。 這是做個數據庫幫助庫雛形 的當晚的再一次嘗試 ORZ 在意識到原來的 ConnectionProvider 提供的只是一個普通(實現(xiàn)了AutoCloseable接口)的 Connection,這在 Reposito...

    Eric 評論0 收藏0
  • JDBC【介紹JDBC、使用JDBC連接數據庫、簡單的工具類】

    摘要:常用的方法創(chuàng)建向數據庫發(fā)送的對象。創(chuàng)建執(zhí)行存儲過程的對象設置事務自動提交提交事務回滾事務對象對象用于向數據庫發(fā)送語句,對數據庫的增刪改查都可以通過此對象發(fā)送語句完成。 1.什么是JDBC JDBC全稱為:Java Data Base Connectivity,它是可以執(zhí)行SQL語句的Java API 2.為什么我們要用JDBC 市面上有非常多的數據庫,本來我們是需要根據不同的數據庫學...

    MSchumi 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<