JDBC Java Data Base Connectivity נערך ע"י: אורי רוטנברג הנחיה: ד"ר תמר בניה קורס: סדנא ב-Java.

Slides:



Advertisements
Similar presentations
Basic JDBC Celsina Bignoli What is JDBC Industry standard for database- connectivity between the Java language and a wide range of.
Advertisements

Database programming in Java An introduction to Java Database Connectivity (JDBC)
JDBC - Java Database Connectivity The objectives of this chapter are: To describe the architecture of JDBC To outline the classes in the java.sql package.
Object-Oriented Enterprise Application Development Advanced JDBC.
1 JDBC: Java Database Connectivity. 2 Introduction to JDBC JDBC is used for accessing databases from Java applications Information is transferred from.
Java Database Connectivity JDBC ICW Lecture 12 Errol Thompson.
Java Database Connectivity JDBC  JDBC is an API, containing classes and interfaces in the java programming language, to execute SQL sentences over an.
JDBC Java API for Database Connectivity. Layout of this recitation Introduction to JDBC API JDBC Architecture Understanding the design of JDBC API –Classes.
JDBC / ODBC JDBC is the java API that facilitate interaction of a java application with the DBMS. FIRST APPROACH:
Advance Computer Programming Java Database Connectivity (JDBC) – In order to connect a Java application to a database, you need to use a JDBC driver. –
1 Java Database Connection (JDBC) There are many industrial-strength DBMS's commercially available in the market. Oracle, DB2, and Sybase are just a few.
CS178 Database Management “JDBC”. What is JDBC ? JDBC stands for “Java DataBase Connectivity” The standard interface for communication between a Java.
June 1, 2000 Object Oriented Programming in Java (95-707) Java Language Basics 1 Lecture 8 Object Oriented Programming in Java Advanced Topics Java Database.
Java Database Connectivity Vijayan Sugumaran Department of DIS Oakland University.
JDBC. What is JDBC JDBC is an acronym for –Java Data Base Connectivity. It allows java/jsp program to connect to any database.
Beginning Databases with JDBC Mike Bradley Adapted from and notes by Kevin Parker, Ph.D.
Java Database Connectivity (JDBC) Introduction to JDBC JDBC is a simple API for connecting from Java applications to multiple databases. Lets you smoothly.
Java Database Connectivity ASE. Java Database Connectivity (JDBC) l JDBC – provides an interface to Relational Data Sources l JDBC library provides the.
What is JDBC? Java Database Connectivity (JDBC) is an API for the Java programming language that defines how a client may access a database. provides.
1 Java DataBase Connectivity JDBC java.sql.*. 2 Java DataBase Connectivity Draft release of JDBC spec (3/96) Java API for executing SQL statements (Since.
1 JDBC – Java Database Connectivity Modified slides from Dr. Yehoshua Sagiv.
Dr R R DOCSIT, Dr BAMU. Basic Java : Introduction to JDBC 2 Objectives of This Session State what is Java Database Connectivity State different.
JDBC Tutorial MIE456 - Information Systems Infrastructure II Vinod Muthusamy November 4, 2004.
JDBC (Java Database Connectivity) SNU OOPSLA Lab. October 2005.
VICTORIA UNIVERSITY OF WELLINGTON Te Whare Wananga o te Upoko o te Ika a Maui COMP 302 Database Systems Java Data Base Connectivity Lecturer Dr Pavle Mogin.
Connecting to Oracle using Java November 4, 2009 David Goldschmidt, Ph.D. David Goldschmidt, Ph.D.
JDBC Java and Databases, including Postgress. JDBC l Developed by Industry leaders l Three main goals: –JDBC should be an SQL-level API –JDBC should capitalize.
JDBC. JDBC stands for Java Data Base Connectivity. JDBC is different from ODBC in that – JDBC is written in Java (hence is platform independent, object.
JDBC  The JDBC (Java Database Connectivity) API helps a Java program to access a database in a standard way  JDBC is a specification that tells the.
1 JDBC – Java Database Connectivity. 2 Introduction to JDBC JDBC is used for accessing databases from Java applications Information is transferred from.
Sadegh Aliakbary. Copyright ©2014 JAVACUP.IRJAVACUP.IR All rights reserved. Redistribution of JAVACUP contents is not prohibited if JAVACUP.
JDBC. Preliminaries Database Database Collection of data Collection of data DBMS DBMS Database management system Database management system Stores and.
JDBC Enterprise Systems Programming. JDBC  Java Database Connectivity  Database Access Interface provides access to a relational database (by allowing.
WEB/DB1 DATABASE PROGRAMMING 3JDBC by the ASU Scholars.
JDBC Session 2 Tonight’s topics: 1.Prepared Statements 2.Transaction Processing 3.Callable Statements & Stored Procedures 4.Scrollable & Updatable Result.
JDBC – Java Database Concentricity
Copyright  Oracle Corporation, All rights reserved. 6 Accessing a Database Using the JDBC API.
Java Database Connectivity. Java and the database Database is used to store data. It is also known as persistent storage as the data is stored and can.
Copyright © 2002 ProsoftTraining. All rights reserved. Building Database Client Applications Using JDBC 2.0.
JDBC Database Programming in Java Prepared by., Mrs.S.Amudha AP/SWE.
JDBC. Java.sql.package The java.sql package contains various interfaces and classes used by the JDBC API. This collection of interfaces and classes enable.
JDBC CS 124. JDBC Java Database Connectivity Database Access Interface provides access to a relational database (by allowing SQL statements to be sent.
Session 30 Basics of JDBC. Java Simplified / Session 30 / 2 of 33 Review A Swing menu consists of a menubar, menuitems and menus. Trees are used to depict.
1 Session 2 Module 3: Scrollable Resultset and Rowsets.
JDBC and SQLJ CIS 612 Spring JDBC JDBC is an API that enables database access from Java programs JDBC for DB access provides ◦ Portability across.
CSI 3125, Preliminaries, page 1 JDBC. CSI 3125, Preliminaries, page 2 JDBC JDBC stands for Java Database Connectivity, which is a standard Java API (application.
JDBC™ Advanced Concepts
Access Databases from Java Programs via JDBC Tessema M. Mengistu Department of Computer Science Southern Illinois University Carbondale
Basics of JDBC.
JDBC (Java Database Connectivity)
Adv Java Chapter 1.JDBC Chapter 2.Servlets Chapter 3.JSP.
Advanced Java Session 5 New York University School of Continuing and Professional Studies.
Ch. NoNameMarks 01AWT24 02Networking18 03JDBC20 04Swing18 05Servlet20 Advance Java Programming.
Database Programming With Java & JDBC Reading: DD Ch. 18, pp al/jdbc/index.html, or anything covering JDBC.
Web Programming Assistant Professor Xiaozhong Liu
Umair Javed©2005 Enterprise Application Development Java Database Connectivity (JDBC) JDBC1.
1 JDBC: Java Database Connectivity. 2 Introduction to JDBC JDBC is used for accessing databases from Java applications Information is transferred from.
Java Database Connectivity JDBC. Open Database Connectivity developed by Microsoft to provide interaction with databases using SQL. Use the JDBC-ODBC.
JDBC.
CS320 Web and Internet Programming Database Access with JDBC Chengyu Sun California State University, Los Angeles.
CS3220 Web and Internet Programming Database Access with JDBC
CS320 Web and Internet Programming Database Access with JDBC
HW#4 Making Simple BBS Using JDBC
JDBC – Java DataBase Connectivity
JDBC – Java DataBase Connectivity
Interacting with Database
CS3220 Web and Internet Programming Database Access with JDBC
CS3220 Web and Internet Programming Database Access with JDBC
JDBC – Java DataBase Connectivity
Presentation transcript:

JDBC Java Data Base Connectivity נערך ע"י: אורי רוטנברג הנחיה: ד"ר תמר בניה קורס: סדנא ב-Java

נושאים JDBC ? מסדי נתונים SQL אופן עבודה עם מסד נתונים Dirvers JDBC צלילה לעומק סיכום

JDBC ? הדרך בא תכנית java מתקשרת עם מסדי נתונים. אוסף מחלקות וממשקים – package java.sql.*;. ממשק שקוף בין תכנית java למסד הנתונים.

מסדי נתונים ייצוג לוגי של נתונים. התפתחות מסדי נתונים - קצת הסטוריה... קבצים xBase DBMS פשוטים – Microsoft Access SQL Server, Oracle, Sybase, DB2, Informix, MySQL

DBMS Data Base Management System מסדי נתונים יחסיים – Relational DataBase דרך לוגית לייצוג נתונים. מספק אמצעים לטיפול, ארגון ואחסון הנתונים. מבנה מסד נתונים: טבלאות - Tables מפתחות- Keys קשרים - Relations

טבלאות - Tables שדה - Field פריט מידע בודד: ת.ז., שם, ת. לידה... מייוצג ע"י עמודה בטבלה. רשומה - Record ישות. אוסף שדות – רלוונטיים לישות במערכת המידע מיוצג ע"י שורה בטבלה.

מפתחות - Keys מפתח ראשי – Primary Key שדה או קבוצת שדות המזהים רשומה באופן חד ערכי. מפתח זר – Foreign Key שדה בטבלה המקושר לשדה בטבלה אחרת בה משמש השדה כמפתח ראשי.

קשרים - Relations מטרת הקשרים לדאוג לשלמות הנתונים – Data Integrity. סוגי קשרים יחיד ליחיד – One to One1:1 יחיד לרבים – One to ManyN:1 רבים לרבים – Many to Many M:N

SQL Structured Query Language שפת שאילתות אחידה לביצוע מניפולציות על הנתונים פקודות עיקריות: Select- שליפת נתונים מטבלה/טבלאות. Insert- הוספת רשומה לטבלה. Update - שינוי נתונים בטבלה. Delete - מחיקת נתונים מטבלה.

SELECT Select * From table_name – All fields & records Select field1, field2 [,field3…] From table_name Select T1.field1, T1.field2, T2.field3 [,…..] From table1 as T1, table2 as T2 Where T1.field1 = T2.field2

SELECT - המשך Select * From table_name Where criteria Select * From table_name Order By field1, field2 [,field3…] ACS/DESC Select * From table_name Group By field1, field2 [,field3…]

INSERT Insert Into table_name (field1, field2 [,field3…]) values (value1, value2 [,value3…])  ניתן לביצוע גם ע"י אובייקט מטיפוס ResultSet

UPDATE Update table_name set field1 = value1 [,field2 = value2…] [where criteria]  ניתן לביצוע גם ע"י אובייקט מטיפוס ResultSet

DELETE Delete From table_name [where criteria]  ניתן לביצוע גם ע"י אובייקט מטיפוס ResultSet

סדר פעולות במסד נתונים פתיחת מסד הנתונים – Connection Connection String Provider – מנוע מסד הנתונים שם הקובץ ומיקומו שם משתמש סיסמא ביצוע פעולות על מסד הנתונים Command/Statement סגירת מסד הנתונים סגירת ה-Command/Statement סגירת ה-Connection

עבודה מול מסד נתונים באמצעות JDBC JDBC – Java Data Base Connectivity הדרך בא תכנית java מתקשרת עם מסדי נתונים. אוסף ממשקים – package java.sql.*;. ממשק שקוף בין תכנית java למסד הנתונים. Driver - תוכנת גישה למסד נתונים מקשר בין תכנית Java למסד הנתונים. מאפשר כתיבת קוד אחיד לטיפול בכל מסדי הנתונים. קיימים Dirvers לרוב מסדי הנתונים.

JDBC - Drivers JDBC-to-ODBC - Type 1 (bridge) גישה למסדי נתונים באמצעות ממשק ODBC של חברת Microsoft. מאפשר גישה למסדי נתונים שעדיין אין עבורם Drivers מטיפוס 3 ו-4. Native-API – Type 2 Driver הכתוב בד"כ ב-C/C++. מתרגם פקודות Java-API לפקודות מסדי הנתונים.

JDBC – Driver - המשך JDBC-Net – Type 3 מאפשר העברת פקודות JDBC ברשת. מתרגם פקודות JDBC לפרוטוקל תקשורת. השרת מתרגם את הפקודות לפקודות מסד הנתונים הספציפי. Native-Protocol – Type 4 כתוב ב-Java טהור. מאפשר גישה ישירה למסד הנתונים.

JDBC – Driver - המשך לכל טיפוס מסד נתונים קיים Driver שלו המסופק ע"י יצרן מסד הנתונים Java Application Driver Manager SQL Server Oracle JDBC-ODBC ODBC Access SQL Server Oracle Drivers

JDBC – צלילה לעומק סקירה כללית Connection Statement ResultSet דוגמת קוד Prepared Statements Transactions Stored Procedures Batch Processing Multiple ResultSets/Update Counts Updatable ResultSets JDBC 2.0

יצירת Connection טעינת Driver Class.forName(“driverName”) throws ClassNotFoundException (checked) יצירת Connection Connection con = DrivareManager.getConnection(connectionString)  connectionString = “url”, “userID”, “password” throws SQLException (checked)

הפקת שאילתא יצירת Statement Statement statement = conn.createStatment() הפקת השאילתא ResutSet resultSet = statement.executeQuery(“SQL_Statement”) כל הפעולות מול מסד הנתונים "זורקות" SQLException

ביצוע פעולות וסגירה עיבוד הנתונים while (resultSet.next()) resultSet.getXXX(fieldNumber/”fieldName”);  fieldNumber = 1…N סגירת מסד הנתונים resultSet.Close() con.Close() כל הפעולות מול מסד הנתונים "זורקות" SQLException

Connections SQLServer Driver : “com.jnetdirect.jsql.JSQLDriver” URL : "jdbc:JSQLConnect://localhost:1433;databaseName=myDB” MySQL Driver : "org.gjt.mm.mysql.Driver" URL : "jdbc:mysql://localhost/myDB” Access Driver : "sun.jdbc.odbc.JdbcOdbcDriver" URL : “ jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\\myDB.mdb;DriverID=22”

דוגמת קוד try { // load Driver Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // set this to a MS Access DB you have on your machine String filename = "c:\\java\\mmTable.mdb"; String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="; database+= filename + ";DriverID=22"; // add on to the end // now we can get the connection from the DriverManager Connection connection = DriverManager.getConnection( database,"",""); Interface Connection מטודה סטטית getConnection של המחלקה DriverManager.

דוגמת קוד - המשך Statement statement = connection.createStatement(); statement.executeQuery("Select * From Madad"); ResultSet rs = statement.getResultSet(); Interface Statement האובייקט נוצר ע"י המטודה createStatement של ה-Interface Connection. על האובייקט שנוצר מפעילים את המטודה executeQuery המקבלת משפט SQL. Interface ResultSet האובייקט נוצר ע"י המטודה getResulSet של האובייקט מטיפוס Statement. מכיל את תוצאת השאילתא.

דוגמת קוד - המשך if (rs != null) while (rs.next()){ date = rs.getDate(1); rate = rs.getFloat("Rate"); System.out.println(date + " - " + rate); } האובייקט ResultSet מטודה next() מאחזרת את הרשומה הבאה (מחזירה boolean) מטודה getDate(1) מאחזרת תאריך משדה ראשון (מהיר יותר) מטודה getFloat(“Rate”) מאחזרת מס' ממשי משדה Rate (קריא יותר)

דוגמת קוד - המשך ResultSetMetaData metaData = rs.getMetaData(); for(int I = 1 ; I <= metaData.getColumnCount(); i++){ System.out.println( "Column Name:"+metaData.getColumnName(i)+"-"+ "Type Name:"+metaData. getColumnTypeName(i) +"-"+ "Type Num:"+metaData.getColumnType(i)); } Interface ResultSetMetaData מספק מידע על מבנה השאילתא. האובייקט נוצר ע"י המטודה getMetaData של האובייקט resultSet.

קבועי - ResultSet קובעים - התנהגות ה-ResultSet אפשרות תנועה על גבי ה-ResultSet. אפשרות עדכון ה-DataBase. TYPE_FORWARD_ONLY מאפשר תנועה ב-ResultSet קדימה בלבד. מרשומה ראשונה עד לאחרונה.

קבועי – ResultSet - המשך TYPE_SCROLL_INSENSITIVE מאפשר תנועה דו כיוונית ב-ResultSet. שינויים אפשריים אך אינם באים לידי ביטוי אלא לאחר ריענון. TYPE_SCROLL_SENSITIVE מאפשר תנועה דו כיוונית ב-ResultSet. שינויים אפשריים ובאים לידי ביטוי מייד עם השינוי.

קבועי – ResultSet - המשך CONCUR_READ_ONLY שינויים ב-ResultSet לא יבואו לידי ביטוי ב-DataBase. CONCUR_UPDATEABLE שינויים ב-ResultSet יבואו לידי ביטוי ב-DataBase באמצאות המטודה update() של ה-ResultSet. דוגמת שימוש: Statement = connection.createStatement( ResutSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY (

ביצוע שינויים ב-DataBase המטודה executeUpdate מופעלת באמצעות אובייקט מטיפוס Statement. מאפשרת ביצוע כל סוגי השינויים ב-DataBase: insert update delete מחזירה int המציין את מספר הרשומות שהושפעו מהפעולה. דוגמא statement = connection.createStatement(); statement.executeUpdate("Insert into MADAD (T_DATE, RATE) values (02/01/2007, 1200)");

PreparedStatement Interface PreparedStatement מאפשר ליצור שאילתות עם פרמרטים. השאילתא נשמרת בצורה מקומפלת. מאפשר טיפול נוח בפרמטרים מחרוזתיים. נוצרת באמצעות המטודה prepareStatement(“SQL”) של האובייקט connection. מכיל מטודות setXXX(paramNo, value) לכל טיפוס משתנה.

PreparedStatement - המשך במקום Select * from Names where “FirstName=‘Amnon ’” Select * from Names where “FirstName=‘Tamar’” יבוא Select * from Names where “FirstName = ? ” setString(1, “Amnon”) setString(1, “Tamar”)

PreparedStatement - המשך PreparedStatement prepared = connection.prepareStatement("Select * From Madad Where Rate = ? "); prepared.setDouble(1, 43.0); rs = prepared.executeQuery(); if(rs != null) while(rs.next()) System.out.println(rs.getDate(1) + " - " + rs.getDouble(2)); prepared.setDouble(1, 40.0); rs = prepared.executeQuery(); if(rs != null) while(rs.next()) System.out.println(rs.getDate(1) + " - " + rs.getDouble(2));

Transactions מהו Transaction דומה במהותה ל-synchronized בתהליכים. מאפשרת להגדיר מספר פעולות DB כפעולה אטומית. דוגמא - העברת כספים בין בנקאית התחלת Transaction. משיכת כספים מחשבון A. הפקדת כספים בחשבון B. הצלחה ? כן – רישום הפעולה כסופית ועדכון ה-DB- commit לא – מניעת רישום העדכונים ב-DB- rollback

Transacion - המשך מימוש ב-JDBC המימוש מתבצע באמצעות מטודות של הממשק Connection. מצב default של ה-connection – autoCommit. בחינת מצב ה-autoCommit – conn.getAutoCommit() סדר הפעולות קביעת autoCommit ל-false - conn.setAutoCommit(false) ביצוע סידרת פקודות SQL. בחינת ההצלחה לאחר הפעולה האחרונה הצלחה – conn.commit() כישלון – conn.rollBack()

Transaction – דוגמת קוד try { // Disable auto commit connection.setAutoCommit(false); // Do SQL() // Commit updates connection.commit(); } catch(SQLException e){ // Rollback update connection.rollback(); }

Stored Procedures פונקציות שמורות ב- DB ומופעלות באמצעותו מאפשרות: שליחת פרמטרים לפונקציה. קבלת פרמטרים מהפונקציה. שימוש ב-JDBC באמצעות הממשק CallAbleStatement. יורש מ-PreparedStatement. מאפשר ביצוע פעולות דומות ל- Prepared Statement ישירות ב- DB. מאפשר שקיפות מול DB שונים.

Stored Procedure – דוגמת קוד יצירת Stored Procedure String createProcedure = "create procedure SHOW_SUPPLIERS " + "as " + "select SUPPLIERS.SUP_NAME, COFFEES.COF_NAME " + "from SUPPLIERS, COFFEES " + "where SUPPLIERS.SUP_ID = COFFEES.SUP_ID; הכנסת ה-Stored Procedure ל-DB Statement stmt = con.createStatement(); stmt.executeUpdate(createProcedure); הפעלת ה- Stored Procedure CallableStatement cs = con.prepareCall("{call SHOW_SUPPLIERS}"); ResultSet rs = cs.executeQuery();

Stored Procedure – דוגמת קוד import java.sql.*; public class UpdateCar { public static void UpdateCarNum(int carNo, int empNo) throws SQLException { Connection con = null; PreparedStatement pstmt = null; try { con = DriverManager.getConnection("jdbc:default:connection"); pstmt = con.prepareStatement( " UPDATE EMPLOYEES SET CAR_NUMBER = ? " + "WHERE EMPLOYEE_NUMBER = ?"); pstmt.setInt(1, carNo); pstmt.setInt(2, empNo); pstmt.executeUpdate(); } finally {I f (pstmt != null) pstmt.close(); } }

Batch Processing מאפשר לצבור מספר פקודות עדכון לביצוע מאוחד. מתאים לפקודות insert, delete ו-update בלבד. מתאים לכל סוגי Statements Statement PreparedStatement CallableStatement כישלון "זורק" BatchUpdateException יורש מ-SQLException

Batch Processing - המשך מטודות הוספת פקודות SQL. addBatch(“SQL”) – מתאים ל-Statement בלבד. addBatch() – מתאים ל:  PreparedStatement  CallableStatement clearBatch() – מנקה את אוסף פקודות ה-SQL.

Batch Processing - המשך executeBatch() – מבצע את אוסף פקודות העדכון. המטודה מחזירה מערך int לבדיקת הצלחת הפעולה. אורך המערך – כמספר פקודות העדכון שהיו ב-Batch. ערכים אפשריים: הצלחה  >=0 – הצלחה – המספר מבטא את מספר הרשומות שטופלו.  -2 - הצלחה - לא ניתן לדעת את מספר הרשומות שטופלו.

Batch Processing - המשך 3- כישלון  ניתן לבדיקה ע"י המטודה getUpdateCounst() של BatchUpdateException.  אם ה-DB מאפשר להמשיך לאחר כישלון יוחזר -3 עבור כל פעולה שלא הצליחה.  אם ה-DB איננו מאפשר להמשיך לאחר כישלון יוחזרו ערכי ההצלחה בלבד.

Batch Processing – דוגמת קוד עבור Statement Statement stmt = con.getStatement( ); stmt.addBatch( “SQL_Statement” );.. stmt.executeBatch( ) ;

Batch Processing – דוגמת קוד עבור PreparedStatement PreparedStatement ps= db.prepareStatement("INSERT INTO test VALUES (?);"); for(int i=0;i<37;i++) { ps.setInt(1,i); ps.addBatch(); } ps.executeBatch();

Multiple ResultSets or Update Counts במקרים מסויימים ה- Statements, PreparedStatements וה- CollableStatement מחזירות מספר ResultSet או מספר פקודות עדכון (update counts). במיקרה זה תופעל המטודה execute() במקום executeQuery() או executeUpdate(). המטודה מחזירה: true – אם הוחזר ResultSet. false – אם הוחזר update count.

Multiple ResultSets or Update Counts מטודות נוספות getResultSet() המחזירה ResultSet. null- אם איננו ResultSet או אין תוצאות נוספות ל-execute. getUpadteCount() המחזירה >=0 – אם הפעולה הצליחה (מבטא מספר רשומות שטפלו) אם בפעולה לא הצליחה או אין תוצאות נוספות ל-execute. getMoreResults() השולפת את התוצאה הנוספת ומחזירה true – אם הוחזר ResultSet. false – אם הוחזר update count.

Updatable ResultSets עדכון ה-DB באמצעות ה-ResultSet. ה-DB צריך לאפשר זאת. יש ליצור Statement עם אפשרות לתנועה דו-כיוונית ועדכון. פעולות אפשריות: הוספה שינוי ביטול

Updatable ResultSets - המשך סדר פעולות יצירת Statement המאפשר תנועה דו-כיוונית ועדכון. Prepared Statement, Callable. יצירת ResultSet – executeQuery(“SQL”). פעולות על ה-ResultSet: הוספה שינוי ביטול עדכון ה-DB. ניתן לבצע פעולות נוספות.

Updatable ResultSets - המשך הוספת רשומה התמקמות על “insert row” - moveToInsertRow() עדכון השדות - updateXXX(col_no, value) הוספת הרשומה ל-DB – insertRow() Statement stmt = connection.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet resultSet = stmt.executeQuery("SELECT * FROM my_table"); resultSet.moveToInsertRow(); resultSet.updateString("col_string", "new data"); resultSet.insertRow(); resultSet.moveToCurrentRow(); // תקף רק בהוספת רשומה

Updatable ResultSets - המשך עדכון רשומה התמקמות על רשומה – move(), moveAbsolute()…. עדכון השדות - updateXXX(col_no, value) עדכון הרשומה ב-DB – updateRow() Statement stmt = connection.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE ); ResultSet resultSet = stmt.executeQuery("SELECT * FROM my_table"); resultSet. moveAbsolute(5) ; resultSet. updateStri ng ("col_string", "new data"); resultSet. updateRow() ;

Updatable ResultSets - המשך ביטול רשומה התמקמות על רשומה – first(), last(), next(), previous()…. ביטול הרשומה ב-DB – delateRow() Statement stmt = connection.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE ); ResultSet resultSet = stmt.executeQuery("SELECT * FROM my_table"); resultSet. first() ; resultSet. deleteRow() ;

JDBC 2.0 דור חדש של טיפול במסדי נתונים. נכלל בגירסת Java 2E. package javax.sql. יצרני Data Base שונים פיתחו ממשקי גישה ל- JDBC 2.0. מימוש ב-JavaBeans. תמיכה באירועים. מתאים לעבודה ברשת האינטרנט. מאפשר עבודה במצב disconnectes.

JDBC המשך DataSource גישה חדשה ליצירת Connection. מממש Java Naming and Directory Interface (JNDI) לאיתור דינאמי של משאבי המידע והקישור למסד הנתונים. Connection Pooling מאפשר איגוד Connections למסדי נתונים. מימוש שיתופי ברשת הטינטרנט. מאפשר יצירת Statement, PreparedStatement ו-CallableStatement לביצוע שאילתות SQL.

JDBC המשך RowSet מקביל ונורש מ-ResultSet ב-JDBC. ממומש כ-JavaBean ותומך באירועי תנועה ועדכון ה-RowSet. מאפשר את כל פעולות ה-ResultSet ללא קשר לתמיכה של ה-DB - עבודה במצב disconnected. מאפשר קישור ל-DB ועדכונו גם אם ה-driver לא תומך בזאת. מממש ממשק Serializable המאפשר עבודה מקומית והעברת ה-RowSet ברשת תקשורת. מאפשר עבודה עם Web Services ומסמכי XML.

JDBC המשך

סיכום JDBC – מאפשר לאפליקציות Java לטפל ב-DB שקיפות מלאה מול הממשק של ה-DB אפשרות עבודה ב-SQL או באמצעות ResultSet PreparedStatement – שאילתות מקומפלות Multiple ResultSets עיבוד אצווה – Batch JDBC 2.0 ממשק מתקדם לאפלקציות Web, XML

מקורות ספר הלימוד Advanced Java 2 Platform HOW TO PROGRAM Deitel & Deitel Santry Prentince Hall Chapter 8 אתר Java Sun

מקורות - המשך בוחן מהאתר של Java Sun דוגמאות JDBC iles/jdbc20/jdbc20.html iles/jdbc20/jdbc20.html iles/jdbc20/jdbc20.html iles/jdbc20/jdbc20.html

תודות תודה לכל הקהל. מקווה שמצגת זו תהיה לכם לעזר. המשך סמסטר פורה. אורי רוטנברג