Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Lecture 11 Java Database Connectivity JAVA Jaeki Song Outline • Introduction • Java Database Connectivity JAVA Jaeki Song Introduction • File processing – Random access or sequential – Only allow access to data • Cannot query • Database systems – Mechanisms to organize and store data – Allow sophisticated queries – Relational database - most popular style • Microsoft Access, Sybase, Oracle • Structured Query Language (SQL, "sequel") – Queries relational databases – Can write Java programs to use SQL queries JAVA Jaeki Song Database Language • Database language – Used to access database – Can use high-level languages • Java, C, C++, Visual Basic, COBOL, PL/I, Pascal • Make requests using a specially designed query language • Host language JAVA Jaeki Song Relational Database Model • Database models – Hierarchal, network, relational (most popular) – Focus on relational • Relational Database Model – Composed of tables • Rows called records • Columns are fields (attributes) – First field usually primary key • Unique for each record • Primary key can be more than one field (column) • Primary key not required JAVA Jaeki Song Relational Database Structure Table: Employee A record Number Name Department Salary Location 23603 JONES, A. 413 1100 NEW JERSEY 24568 KERWIN, R. 413 2000 NEW JERSEY 34589 LARSON, P. 642 1800 LOS ANGELES 35761 MYERS, B. 611 1400 ORLANDO 47132 NEUMANN, C. 413 9000 NEW JERSEY 78321 STEPHENS, T. 611 8000 ORLANDO Primary Key JAVA A column Jaeki Song Advantages • Tables easy to use, understand, and implement • Easy to convert other database structures into relational scheme – Universal • • • • JAVA Projection and join operations easy to implement Searches faster than schemes with pointers Easy to modify - very flexible Greater clarity and visibility than other models Jaeki Song Java Database Connectivity • You can access data files in Java using JDBC – JDBC classes handle communication between your Java program and a database driver – Java uses JDBC-ODBC Bridge JAVA Jaeki Song Data Source Name (DSN) • Before using JDBC in a Window environment, you need to create a DSN – DSN registers your database files on the computer • Setting up a DSN – Step1: From the start menu, select control panel – Step2: select ODBC Data source – Step3: On the User DSN tab, click on the Add button JAVA Jaeki Song Data Source Name (DSN) JAVA Jaeki Song Data Source Name (DSN) – Step4: Select the database type (Microsoft Access database), and click Finish JAVA Jaeki Song Data Source Name (DSN) – Step5: Type in the Data Source Name JAVA Jaeki Song Data Source Name (DSN) – Step6: Use the Select (or Browse) button to locate the file, then close the dialog boxes JAVA Jaeki Song JDBC-ODBC Bridge Driver • In Java code, you must connect to the driver using the Class.forName method – Connect to Microsoft’s driver Class.forName(“com.ms.jdbc.odbc.JdbcOdbcDriver” ); – Connect to Sun’s driver Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); JAVA Jaeki Song JDBC-ODBC Bridge Driver • If you need to be able to load either driver, you can use try/catch block try { Class.forName(“com.ms.jdbc.odbc.JdbcOdbcDriver”); } catch { try {Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);} catch(ClassNotFoundException err) { System.err.println(“Driver did not load properly”);} } JAVA Jaeki Song Connecting to the Database • Next step is to connect to the database using the name that your registered as a DSN “jdbc:odbc:EX1” • Use DriverManager.getConnection method and assign it to a Connection object conEmployees = DriverManager.getConnection(“jdbc:odbc:EX1” ); JAVA Jaeki Song Connecting to the Database //Declare a Connection object Connection conEmployees; //Connect to the database try { conEmployees = DriverManager.getConnection (“jdbc:odbc:EX1”); } catch(SQLException err) { statement // “No connection to database” } JAVA Jaeki Song Creating a ResultSet • A ResultSet object contains a collection of records from the database – To create ResultSet, you must declare a Statement object and call the Connection objects’ createStatement method Statement cmdEmployees; ResultSet rsEmployees; – You create a ResultSet with an SQL query with executeQuery method Select * from Employees cmdEmployees.executeQuery(“Select * from Employees”); JAVA Jaeki Song Example try { Connection conEmployees; conEmployees = DriverManager.getConnection (“jdbc:odbc:EX1”); //create a ResultSet Statement cmdEmployees = conEmployees.createStatement(); ResultSet rsEmployees = cmdEmployees.executeQuery (“Select * from Employees”); } catch(SQLException err) { statement // “No connection to database” } JAVA Jaeki Song Example • You can create an SQL statement to create a ResultSet that matches a given condition ResultSet rsEmployees = cmdEmployees.executeQuery ( “Select * from Employees Where [Last Name] = ‘Song’ ; ”); ResultSet rsEmployees = cmdEmployees.executeQuery ( “Select * from Employees Where [Last Name] = ‘ “ + strLastName + ” ’ ; ”); JAVA Jaeki Song Retrieving a Record • Looping through a ResultSet • Displaying the fields from a record JAVA Jaeki Song Retrieving a Record • When you first open a ResutSet, the current-record is located just prior to the first record • You call the ResultSet’s next method – The next method moves the current-record pointer to the first record and returns boolean value • true: the next record exists • false: no more records exists JAVA Jaeki Song Example try { The getString method retrieves the data for the specified string field rsEmployees.next( ); lstNames.add(rsEmployees.getString (“Last Name”)); } catch (SQLException err) { System.err.println(“Error : “ + err.toString()); } JAVA Jaeki Song Looping through a ResultSet • You can step through all records in a ResultSet using a loop – while (rsResultSet.next( )) to control the loop – The boolean condition tests true as long as records remain in the ResultSet while(rsEmployees.next( )) lstNames.add(rsEmployees.getString(“Last Name”)); JAVA Jaeki Song Displaying the Fields try { //display information if (rsEmployees.next( )) { lblFirstName.setText(rsEmployees.getString(“ First Name”); lblSSN.setText(rsEmployees.getString(“SSN”)); lblSSN.setText(rsEmployees.getString(“Phone Number”)); } else //Statement } catch (SQLException err) { System.err.println(“Error : “ + err.toString()); } JAVA Jaeki Song Accessing the Data Fields • Access the data in database fields by using the appropriate method for the data type – getString for string field – getFloat or getInt for float or int fields • Convert the value to a string format to display the value in a label or text field JAVA Jaeki Song Closing the Connection • Make sure that the database connection is closed at the termination of the program – Place the statement in the stop method – Place the code in your exit routine public void stop( ) { if (conEmployees != null) conEmployees.close( ); } JAVA Jaeki Song SQL • Java’s JDBC uses Structured Query Language (SQL) to create a ResultSet ResultSet rsEmployees = cmdEmployees.executeQuery(“Select * from Employees”); ResultSet rsEmployees = cmdEmployees.executeQuery(“Select * from Employees where [Last Name] = ‘ “ + strLastName + ” ’; ”); JAVA Jaeki Song Types of SQL Statement • For the field(s), you can list the field names or use an asterisk to indicate all fields from the named table. – Multiple-world field names must be enclosed in square brackets or accent grave marks (‘) – The closing semicolon(;) is specified in the SQL standards JAVA Jaeki Song SQL Examples • SELECT “Select * from Employees;” • Where “Select * from Employees where [Last Name] = ‘ ABC’ ”; “Select * from Employees where [Last Name] = ‘ “ + strLastName + ”’; ” JAVA Jaeki Song Adding a Record • SQL insert statement-General format Insert Into TableName (FieldList) Values (ListOfValue) • Use the statement object’s executeUpdate method to excute the SQL Insert Into statement JAVA Jaeki Song Example cmdEmplyees.executeUpdate (“ Insert Into Employees” + “( [Last Name] , [First Name], SSN, [Phone Number]) ” + “Values( ‘ “ + txtLastName.getText() + ” ’, ‘ “ + txtFirstName.getText( ) + ” ’)”); JAVA Jaeki Song Finding a Record • SQL Statement strLastName = txtLastName.getText(); String query = “Select *from Employees where [Last Name] = ‘ “ + strLastName + ’ ” ”; rsEmployees = statement.executeQuery(query); JAVA Jaeki Song