<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    雅典之夏的小站
    知人者智 自知者明 Fighting!!
    Java和SQL各自有一套自己定義的數(shù)據(jù)類型(jsp的數(shù)據(jù)類型實(shí)際上就是Java的數(shù)據(jù)類型),我們要在Jsp程序和數(shù)據(jù)庫管理系統(tǒng)之間正確的交換數(shù)據(jù),必然要將二者的數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換。先讓我們來看兩個(gè)表:

    表SQL到Java數(shù)據(jù)類型影射表

    SQL 數(shù)據(jù)類型
    JAVA數(shù)據(jù)類型

    CHAR
    String

    VARCHAR
    String

    LONGVARCHAR
    String

    NUMERIC
    java.math.BigDecimal

    DECIMAL
    java.math.BigDecimal

    BIT
    Boolean

    TINYINT
    Byte

    SMALLINT
    Short

    INTEGER
    Int

    BIGINT
    Long

    REAL
    Float

    FLOAT
    Double

    DOUBLE
    Double

    BINARY
    byte[]

    VARBINARY
    byte[]

    LONGVARBINARY
    byte[]

    DATE
    java.sql.Date

    TIME
    java.sql.Time

    TIMESTAMP
    java.sql.Timestamp














    Java到SQL數(shù)據(jù)類型影射表

    JAVA數(shù)據(jù)類型
    SQL 數(shù)據(jù)類型

    String
    VARCHAR or LONGVARCHAR

    java.math.BigDecimal
    NUMERIC

    Boolean
    BIT

    Byte
    TINYINT

    Short
    SMALLINT

    Int
    INTEGER

    Long
    BIGINT

    Float
    REAL

    Double
    DOUBLE

    byte[]
    VARBINARY or LONGVARBINARY

    java.sql.Date
    DATE

    java.sql.Time
    TIME

    java.sql.Timestamp
    TIMESTAMP




    這里,大伙要注意了,并不是所有的數(shù)據(jù)類型在各種數(shù)據(jù)庫管理系統(tǒng)中都被支持。下面,就幾種常用的數(shù)據(jù)類型之間的轉(zhuǎn)化進(jìn)行說明:



    (1) CHAR, VARCHAR, 和 LONGVARCHAR



    在SQL語言中,有三種分別表示不同長度的字符類型CHAR, VARCHAR, 和 LONGVARCHAR,在Java/Jsp中并沒有相應(yīng)的三種不同的數(shù)據(jù)類型與之一一對應(yīng),JDBC的處理方法是將其與String或者char[]對應(yīng)起來。在實(shí)際編程中不必對著三種SQL數(shù)據(jù)類型進(jìn)行區(qū)分,全部將他們轉(zhuǎn)化為Sting或者char[]就可以了。而且通常使用應(yīng)用的非常普遍的String類型。我們還可以利用String類提供的方法將一個(gè)String對象轉(zhuǎn)化為char[],或者用char[]為參數(shù)構(gòu)造一個(gè)Stirng對象。

    對于定長度的SQL數(shù)據(jù)類型CHAR(n),當(dāng)從數(shù)據(jù)庫管理系統(tǒng)中獲得的結(jié)果集提取該類型的數(shù)據(jù)時(shí),JDBC會為其構(gòu)造一個(gè)長度為n的String對象來代表他,如果實(shí)際的字符個(gè)數(shù)不足’n’,系統(tǒng)會自動(dòng)為String對象補(bǔ)上空格。當(dāng)向數(shù)據(jù)庫管理系統(tǒng)寫入的數(shù)據(jù)類型應(yīng)該是CHAR(n)時(shí),JDBC也會將該String對象的末尾補(bǔ)上相應(yīng)數(shù)量的空格。

    一般情況下,CHAR, VARCHAR, LONGVARCHAR和String之間可以無差錯(cuò)的進(jìn)行轉(zhuǎn)換。但非常值得注意的是LONGVARCHAR,這種SQL的數(shù)據(jù)類型有時(shí)在數(shù)據(jù)庫中代表的數(shù)據(jù)可能有幾兆字節(jié)的大小,超過了String對象的承受范圍。JDBC解決的辦法是用Java的Input Stream來接受這種類型的數(shù)據(jù)[以后我們回涉及到]。Input Stream不僅支持ASCII,而且支持Unicode,我們可以根據(jù)需要進(jìn)行選擇。



    (2) DECIMAL 和 NUMERIC



    SQL的DECIMAL 和 NUMERIC通常用來表示需要一定精度的定點(diǎn)數(shù)。在Java的簡單數(shù)據(jù)類型中,沒有一種類型與之相對應(yīng)。但從JDK1.1開始,Sun公司在java.math.*包中加入了一個(gè)新的類BigDecimal,該類的對象可以與DECIMAL 、NUMERIC進(jìn)行轉(zhuǎn)換。

    另外,當(dāng)從數(shù)據(jù)庫管理系統(tǒng)中讀取數(shù)據(jù)時(shí),還可以用getString()方法來獲取DECIMAL 和 NUMERIC。



    (3) BINARY, VARBINARY, 和 LONGVARBINARY



    在編程時(shí)無須精確區(qū)分這三種SQL數(shù)據(jù)類型,JDBC將他們統(tǒng)一影射為byte[]。其中LONGVARBINARY和LONGVARCHAR相似,可以代表幾兆字節(jié)的數(shù)據(jù),超出數(shù)組的承受范圍。解決的辦法依然是用Input Stream來接受數(shù)據(jù)。



    (4) BIT



    代表一個(gè)二進(jìn)制位的BIT類型被JDBC影射為boolean型。



    (5) TINYINT, SMALLINT, INTEGER, 和 BIGINT



    SQL語言的TINYINT, SMALLINT, INTEGER, 和 BIGINT分別代表8位、16位、32位、64位的數(shù)據(jù)。他們分別被影射為Java的byte, short, int, 和 long



    (6) REAL, FLOAT, 和 DOUBLE



    SQL定義了REAL, FLOAT, DOUBLE來支持浮點(diǎn)數(shù)。JDBC將REAL影射到Java的float,將FLOAT,DOUBLE影射到j(luò)ava的double。



    (7) DATE, TIME, 和 TIMESTAMP



    SQL定義了三種和日期相關(guān)的數(shù)據(jù)類型。 DATE代表年、月、日,TIME代表時(shí)、分、秒,TIMESTAMP結(jié)合了DATE和TIME的全部信息,而且增加了更加精確的時(shí)間計(jì)量單位。

    在java的標(biāo)準(zhǔn)類庫中,java.util.*包中的Date類用來表示日期和時(shí)間。但是該類和SQL中的DATE, TIME, 和 TIMESTAMP直接影射關(guān)系并不清晰。并且,該類也不支持TIMESTAMP的精確時(shí)間計(jì)量單位。因此,Sun公司在java.sql.*中為java.util.Date增加了三個(gè)子類:java.sql.Date,java.sql.Time ,java.sql.Timestamp,分別與SQL中的三個(gè)日期數(shù)據(jù)類型相對應(yīng)。



    總之,關(guān)于SQL與JAVA之見數(shù)據(jù)類型的轉(zhuǎn)化,還有很多細(xì)節(jié)方面的東西,這里就不一一介紹了,有需要的朋友自己可以去查一下相關(guān)文檔。這里給大家介紹一個(gè)我常去的網(wǎng)站:

    http://java.sun.com/docs/books/tutorial/jdbc。
    posted on 2005-10-27 12:52 rkind 閱讀(306) 評論(0)  編輯  收藏 所屬分類: JAVA基礎(chǔ)&數(shù)據(jù)庫
    主站蜘蛛池模板: 成人无遮挡裸免费视频在线观看| 永久免费A∨片在线观看| 国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频 | 成人无遮挡毛片免费看| 亚洲成Av人片乱码色午夜| 中国在线观看免费的www| 亚洲中文字幕在线第六区| 成人自慰女黄网站免费大全| 亚洲最大av无码网址| 男男gay做爽爽的视频免费| 可以免费观看的一级毛片| 免费无遮挡无码视频在线观看| 亚洲国产成人影院播放| 国产在线精品观看免费观看| 亚洲综合国产一区二区三区| 成人影片一区免费观看| 亚洲综合无码一区二区三区| 成年网站免费视频A在线双飞| 91在线亚洲综合在线| 亚洲?V乱码久久精品蜜桃 | 亚洲午夜未满十八勿入| 97碰公开在线观看免费视频| 亚洲字幕AV一区二区三区四区 | 亚洲女久久久噜噜噜熟女| 久久久久成人片免费观看蜜芽| 亚洲精品一卡2卡3卡三卡四卡| 夭天干天天做天天免费看| 欧洲美女大片免费播放器视频| 亚洲国产无套无码av电影| 亚洲精品免费在线| 美国毛片亚洲社区在线观看| 亚洲色精品aⅴ一区区三区| 2019中文字幕免费电影在线播放| 亚洲成av人片天堂网无码】| 国产av无码专区亚洲av果冻传媒| 69pao强力打造免费高清| 美女视频黄频a免费| 亚洲一区二区三区首页| 免费h成人黄漫画嘿咻破解版| 亚在线观看免费视频入口| 色欲色欲天天天www亚洲伊|