什么手机电池最耐用| 离婚都需要什么| 2009是什么年| quest是什么车| 扑救带电火灾应选用什么灭火器| 什么情况要割包皮| 为什么德牧不能打| 身体不出汗是什么原因| 1974年属什么| 拉黑一个人意味着什么| KT是什么| 氯雷他定片主治什么病| 看破不说破什么意思| 59年属什么| 右下眼皮跳是什么原因| 西兰花和什么菜搭配| 反复高烧是什么原因| 下半年有什么节日| ig什么意思| 早泄是什么症状| 飞花令是什么| 柿子不能和什么一起吃| 猫的祖先是什么动物| 五行黑色属什么| 优质是什么意思| 壬水是什么水| 瘦的人吃什么才能变胖| 胎盘位于子宫后壁是什么意思| 月经期头疼是什么原因| 炖汤用什么锅比较好| 结婚一年是什么婚| 2030年属什么生肖| 乌龟最喜欢吃什么| 什么品牌的床好| 脾是什么器官| 大力丸是什么| 麻腮风疫苗什么时候打| 脚气用什么药| 画是什么生肖| 林可霉素主治什么病| 孕妇吃什么盐最好| 谷草谷丙比值偏高代表什么| 箭在弦上是什么意思| 胃阳虚吃什么中成药| 球镜柱镜是什么意思| 心有不甘是什么意思| 酸奶对人体有什么好处| 紫苏是什么| dce是什么溶剂| 羊传染人的病叫什么名| 健康管理是什么专业| 乳腺化疗期间吃什么| 初级中学是什么意思| 蒲公英的种子像什么| 布病什么症状| 拔罐对身体有什么好处和坏处| 乳腺导管局限性扩张是什么意思| 什么是比特币| 肺炎衣原体阳性是什么意思| 神的国和神的义指的是什么| 呼吸内镜检查什么| 什么的大山| 红色尿液是什么原因| 醋坛子是什么意思| 宝宝消化不良吃什么药| 阉人什么意思| 青定读什么| 一什么新闻| 1989年属什么的| 1.27是什么星座| 10月12是什么星座| 滔滔不绝的绝是什么意思| 心脏呈逆钟向转位什么意思| 无花果叶子有什么功效| 穷兵黩武是什么意思| 怀孕肚子上长毛是什么原因| pst是什么意思| 高烧后拉稀说明什么| 鸡炖什么好吃又有营养| 胃体隆起是什么意思| 晚上喝什么茶有助于睡眠| 爸爸的哥哥叫什么| 牛津布是什么材质| 毛片是什么| 二甲双胍有什么副作用| 磨玻璃结节是什么意思| 长针眼是什么意思| 脚气泡脚用什么泡最好| supreme是什么牌子| 午安是什么意思| 河堤是什么意思| 老年人头晕挂什么科| 中元节是什么| 大便有粘液什么原因| 首善是什么意思| 莫名其妙的心情不好是什么原因| 口缘字一半念什么| 今年17岁属什么| 干将是什么意思| 朴实无华是什么意思| ra是什么病的缩写| 宝格丽表属于什么档次| 常喝黑苦荞茶有什么好处| 悟性是什么意思| 支原体抗体阳性是什么意思| ns什么意思| 无语是什么意思| 周公解梦梦见蛇是什么意思| 锁阳有什么功效| dr钻戒什么档次| pearl是什么意思| 阉人什么意思| 女生白带是什么| 什么叫做犯太岁| 浜是什么意思| 豆汁是什么味道| 女人身体发热预示什么| hb是什么意思| 阿拉伯人属于什么人种| 油头粉面是什么意思| 屁多是什么毛病| 破窗效应是什么意思| 虱子长什么样| 事宜愿为是什么意思| 拔智齿第二天可以吃什么| 摄政王是什么意思| 次第花开是什么意思| 草菅人命是什么意思| 什么是初心| 切勿是什么意思| 小儿流鼻涕吃什么药好| 脑梗死吃什么药| otc属于什么药| 7月22日什么星座| 眼震是什么症状| 阴道出血用什么药| 小狗吃什么| 八朵玫瑰花代表什么意思| 五彩绳什么时候扔掉| 身上搓出来的泥是什么| 斑秃吃什么药| 什么病需要透析| 石墨灰是什么颜色| 特警属于什么编制| 为什么家里会有隐翅虫| 鸟屎掉手上有什么预兆| 红红的眼睛是什么生肖| 眉毛上方有痣代表什么| 肾阴阳两虚吃什么药| 硅对人体有什么危害| 为什么一来月经就拉肚子| 嗜酸性粒细胞偏高是什么意思| 郑少秋为什么娶沈殿霞| 消肿用什么药| ems是什么意思| 拿什么爱你| 伯伯的儿子叫什么| 胃反酸水吃什么药| 冰心原名叫什么名字| 什么不见| 拉出黑色的屎是什么原因| 手指发红是什么原因| poison是什么意思| 北京为什么叫四九城| 检查妇科清洁度三是什么意思| 胆汁反流有什么症状| otc药是什么意思| 牙龈红肿吃什么药| 腋下臭是什么原因| 泌乳素高有什么症状| 什么是先兆流产| www指什么| 梦见办酒席是什么意思| 梦见小兔子是什么意思| 尿浑浊是什么病的前兆| 梦见狗咬人是什么预兆| 胃泌素瘤是什么意思| 血糖高检查什么项目| 什么是白平衡| 黄皮什么时候成熟| 硌得慌是什么意思| 阴茎瘙痒是什么原因| 味精的主要成分是什么| 头皮屑多是什么原因怎么去除| 头晕挂什么科比较好| 高烧后拉稀说明什么| 老年人吃什么钙片好| 美国什么时候建国的| 基围虾为什么叫基围虾| 肠道ct能检查什么| hm是什么牌子的衣服| 狗癣用什么药最有效| 臆想症是什么| 操刀是什么意思| 小儿咳嗽吃什么药| 十月五号是什么星座| 口蘑不能和什么一起吃| 焦虑症是什么意思| 偏头痛是什么原因引起的| 骶1隐裂是什么意思| 707是什么意思| 什么什么之什么| 食管挂什么科| 孔子姓什么名什么| 什么是紫癜| 潮起潮落是什么意思| 腺肌症不治疗会导致什么结果| 密度是什么意思| 金银花主治什么| ppap是什么| 牛肉用什么腌制比较嫩| cc是什么单位| 藕断丝连是什么意思| 勾心斗角是什么意思| 月经不调挂什么科室| 金箔是什么| 为什么可乐能溶解鱼刺| 蚊子喜欢咬什么血型| 什么是阴道| 黑彩是什么| 生性凉薄什么意思| 消化道出血有什么症状| 阴道什么形状| 姓杨的女孩子取什么名字| 嬷嬷是什么意思| 人体电解质是什么| 什么是不动产权证| 排便困难用什么药| 春天像什么| 马斯卡彭是什么| 尿血是什么原因女性| 刚感染艾滋病什么症状| f代表什么| 身上长水泡是什么原因| 省人大代表是什么级别| 经常肚子疼拉肚子是什么原因| 内分泌紊乱是什么症状| 薄熙来犯了什么罪| 抖腿是什么原因| 男性性功能下降是什么原因| 中意你是什么意思| 癫痫病是什么原因引起的| 腺样体挂什么科| 尿失禁是什么症状| 脱发缺少什么维生素| 什么程度下病危通知书| 胸疼是什么原因| 电子烟是什么| 扒灰什么意思| 歪理是什么意思| 慢性咽炎吃什么药| 头孢过敏什么症状| 云是什么生肖| 6月26什么星座| 出淤泥而不染是什么意思| 今天属相是什么生肖| 做梦剪头发是什么意思| 肩胛骨疼挂什么科| 什么是植物蛋白| ons是什么意思| 三尖瓣反流什么意思| 深呼吸有什么好处| 便潜血阳性什么意思| 平均红细胞体积偏低是什么原因| 百度Ugrás a tartalomhoz

马蜂窝发布清明小长假出游趋势:二线城市客源猛涨

Ellen?rz?tt
A Wikipédiából, a szabad enciklopédiából
JDBC
Programozási nyelvJava
Operációs rendszermulti-platform
PlatformJava virtuális gép
KategóriaData access API
A JDBC weboldala

A Java Database Connectivity, r?viden JDBC egy API a Java programozási nyelvhez, amely az adatbázishozzáférést támogatja. A JDBC definiálja az adatbázisok lekérdezéséhez és módosításához szükséges osztályokat és metódusokat. A relációs adatmodellhez igazodik.

A Standard Edition és az Enterprise Edition egyaránt tartalmazza a JDBC-t a specifikáció részeként. A Sun terjeszt egy zárt forráskódú ODBC implementációt is a Standard Edition részeként, amellyel minden ODBC-kompatibilis adatbázishoz lehet kapcsolódni.

áttekintés

[szerkesztés]

A JDBC már az 1.1 verziótól kezdve a Standard Edition része. A vonatkozó osztályokat a java.sql csomag tartalmazza. A 3.0 verziótól kezdve a fejlesztés a Java Community Process keretében t?rténik.

  • A JDBC 3.0 verziót a JSR 54 definiálja és a J2SE 1.4 kiadás részét képezi.
  • A JDBC rowset kiterjesztést a JSR 112 fogalmazza meg.
  • A JDBC 4.0 verziót a JSR 221 specifikálja és a Java SE 6 kiadás része.
  • A JDBC 4.1-t a JSR 221 karbantatási kiadás 1 specifikálja[1] és része a Java SE-nak.[2]
  • A legfrissebb verzió a JDBC 4.2, JSR 221 karbantatási kiadás 2 specifikálja[3] és része a Java SE 8-nak.[4]

A JDBC lehet?vé teszi t?bb implementáció létezését és használatát egy alkalmazáson belül. Az API biztosít egy mechanizmust a megfelel? java csomagok bet?ltésére és regisztrálására az úgynevezett Driver Manager-en keresztül. A Driver Manager az objektumorientált programozás tervezési mintái szerint egy factory amely adatbáziskapcsolatokat gyárt.

Az adatbáziskapcsolatot a java.sql csomag Connection osztálya reprezentálja. Ezekkel SQL kifejezéseket lehet készíteni és futtatni. Az SQL kifejezéseket a Statement illetve a PreparedStatement osztályok reprezentálják. A kifejezések lehetnek lekérdez? SELECT kifejezések vagy módosító CREATE, INSERT, UPDATE és DELETE kifejezések, de lehet?ség van tárolt eljárások futtatására is a java.sql.CallableStatement osztállyal:

  • java.sql.Statement – a kifejezés végrehajtódik az adatbázisszerveren
  • java.sql.PreparedStatement – a kifejezés cache-el?dik majd az adatbázisszerver optimalizál neki egy execution path-et, így t?bbsz?r, hatékonyabban lehet futtatni.
  • java.sql.CallableStatement – az adatbázis tárolt eljárásainak futtatására.

A módosító kifejezések, tehát az INSERT, az UPDATE és a DELETE futtatása csak egy int típusú egész számot ad vissza, ami azt mondja meg, hány sorra hatottak a változások. A lekérdez? kifejezések az eredményt egy ResultSet objektum formájában adják vissza, ami a relációs adatmodellben egy relációnak felel meg. Ennek a relációnak a sorai iteratívan lekérdezhet?ek. Az objektum ezen kívül metaadatokat is tartalmaz, amelyek az oszlopok neveit és típusát adják meg.

Az alap API-hoz létezik egy kiegészítés is a javax.sql csomagban, amivel pozicionálni is lehet az eredményhalmazban és kurzorokat is lehet használni t?bbek k?z?tt.

Példa

[szerkesztés]

A használt adatbázisszerver JDBC driver-ét a java.lang.Class.forName(String) metódussal lehet bet?lteni. Az alábbi programsor valami jdbc forgalmazó driverét t?lti be az alkalmazásba. (Egyes virtuális gépek megk?vetelik a Driver objektum példányosítását is a .newInstance() metódussal.)

Class.forName( "com.valamijdbcforgalmazo.ValamiJdbcDriver" );

A JDBC 4.0 verziótól már nem kell explicit bet?lteni a JDBC drivert a Class.forName() metódussal.[5]

Miután a virtuális gép bet?lt?tte a java.sql.Driver osztályt, példányosítja azt és regisztrálja a java.sql.DriverManager.registerDriver(Driver) metódussal. Ezt a példányosító és regisztráló kódot a driver gyártójának kell implementálnia a driver osztály statikus konstruktorában.

A k?vetkez? lépés az adatbáziskapcsolat létrehozása egy Connection példány formájában a DriverManager.getConnection() metódus segítségével:

Connection conn = DriverManager.getConnection(
     "jdbc:valamijdbcforgalmazo:további adatok a jdbc forgalmazótól függ?en",
     "felhasznalonev",
     "jelszo" );

Az URL mindig a ?jdbc:” karaktersorozattal kezd?dik, a t?bbi része a forgalmazótól függ. Ha megvan az adatbáziskapcsolat, akkor létre lehet hozni az SQL kifejezést:

Statement stmt = conn.createStatement();
try {
    stmt.executeUpdate( "INSERT INTO MyTable( name ) VALUES ( 'Rob' ) " );
} finally {
    // Fontos lezárni a kifejezést!
    stmt.close();
}

A JDBC objektumok lezárása nagyon fontos, mert az adatbáziskapcsolatok, kifejezések és eredményhalmazok er?forrásokat, például socket-eket és file descriptorokat, foglalnak le az operációs rendszerben. Távoli szerver esetében a szerveren kurzorokat is lefoglalhatnak. A nyitva felejtett objektumok váratlan és zavarbaejt? hibákhoz vezethetnek. A JDBC objektumok használatakor ajánlatos k?vetni az alábbi try-finally mintát:

Statement stmt = conn.createStatement();
try {
    ResultSet rs = stmt.executeQuery( "SELECT * FROM MyTable" );
    try {
        while ( rs.next() ) {
	    // Sorfeldolgozás.
        }
    } finally {
        rs.close();
    }
} finally {
    stmt.close();
}

A PreparedStatement használata hasonlít a Statement használatához, de dinamikusan paraméterezhet?:

PreparedStatement ps = conn.prepareStatement( "SELECT i.*, j.* FROM Omega i, Zappa j WHERE i = ? AND j = ?" );
try {
    ps.setString(1, "Poor Yorick");
    ps.setInt(2, 8008);
    ResultSet rs = ps.executeQuery();
    try {
        while ( rs.next() ) {
	    // Sorfeldolgozás.
        }
    } finally {
        rs.close();
   }
} finally {
   ps.close();
}

Az alábbi SQL típusokra lehet konvertálni változókat a Java nyelvb?l:

Oracle típus setXXX()
CHAR setString()
VARCHAR2 setString()
NUMBER setBigDecimal()
setBoolean()
setByte()
setShort()
setInt()
setLong()
setFloat()
setDouble()
INTEGER setInt()
FLOAT setDouble()
CLOB setClob()
BLOB setBlob()
RAW setBytes()
LONGRAW setBytes()
DATE setDate()
setTime()
setTimestamp()

Tárolt eljárásos példa a CallableStatement használatával az API dokumentációjában található.

Kivételek

[szerkesztés]

Ha valamilyen adatbázis m?velet sikertelen, az java.sql.SQLException kivételt vált ki. általában programkódból nem lehet sokat tenni az ilyen hibáknál a naplózáson kívül. Népszer? gyakorlat az ilyen kivételeknél alkalmazásszint? kivételt kiváltani, ami adott esetben a tranzakció visszavonását és a felhasználó értesítését eredményezheti.

JDBC driverek

[szerkesztés]

A driver nem más, mint egy kliensoldali adapter, amely a java program kéréseit átalakítja az adatbázisszerver által értelmezhet? formára.

Típusok

[szerkesztés]

A legt?bb relációs adatbázisszerverhez léteznek driverek. Ezeket a k?vetkez? módon tipizálják:

  • Type 1 – JDBC-ODBC híd
  • Type 2 – natív driver
  • Type 3 – pure java, hálózati protokoll driver
  • Type 4 – pure java, natív protokoll driver

Források

[szerkesztés]
梦见杀猪是什么意思 早上起床口苦是什么原因 有白痰是什么原因 mm代表什么 湿气重吃什么中药好
什么是香港脚 缺席是什么意思 手机账号是什么 不忘初心方得始终是什么意思 碳酸钠是什么
轻如鸿毛是什么意思 哺乳期乳腺炎吃什么药 乙肝235阳性是什么意思 偏官是什么意思 上皮内低度病变是什么意思
什么叫口腔溃疡 suv什么意思 中华草龟吃什么 运气是什么意思 吃什么食物对肠胃好
牡丹是什么意思hcv7jop7ns3r.cn 什么样的季节hcv8jop4ns5r.cn 畏手畏脚是什么意思hcv8jop0ns4r.cn 肌酐低是什么意思tiangongnft.com 肾积水是什么原因hcv7jop9ns8r.cn
山竹有什么好处hcv8jop2ns8r.cn 头发有什么用处hcv9jop2ns2r.cn columbia是什么牌子hkuteam.com 贞操锁是什么wuhaiwuya.com 55年属什么hcv9jop1ns5r.cn
酒酿是什么chuanglingweilai.com 结膜炎滴什么眼药水hcv9jop3ns1r.cn 病毒为什么会变异hcv7jop5ns3r.cn 睡觉天天做梦是什么原因1949doufunao.com 升血压吃什么药hcv9jop0ns2r.cn
7月25日什么星座jasonfriends.com 1958年属什么生肖aiwuzhiyu.com 集训是什么hcv8jop1ns2r.cn 马来西亚人为什么会说中文hcv9jop8ns0r.cn 女生下体长什么样子hcv7jop6ns3r.cn
百度