A Database Query Performed with JDBC

From Java Example Source Code

Jump to: navigation, search

Contents

[edit] Overview - A Database Query Performed with JDBC

This Java example program shows how to query a Database with JDBC-ODBC bridge.

[edit] Java Source Code

  • Package: com.darwinsys
  • File: JDBCQuery.java
ppackage com.darwinsys;
 
/*
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.com/, 1996-2002.
 * All rights reserved. Software written by Ian F. Darwin and others.
 * $Id: JDBCQuery.java,v 1.1 2008/08/07 12:42:32 cat Exp $
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 * 
 * Java, the Duke mascot, and all variants of Sun's Java "steaming coffee
 * cup" logo are trademarks of Sun Microsystems. Sun's, and James Gosling's,
 * pioneering role in inventing and promulgating (and standardizing) the Java 
 * language and environment is gratefully acknowledged.
 * 
 * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&T, for
 * inventing predecessor languages C and C++ is also gratefully acknowledged.
 */
 
/*
 * Modified by Code Panda. 
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.Statement;
 
/**
 * A trivial example of a database query performed with JDBC. The database being queried only exists locally on Windows'95; it the
 * MS Access "Video Database" sample database. Note that you must select this as "System DSN" under the name "Video.Collection"
 * (On '95 you do this from Settings->Control Panel->32Bit ODBC->System DSN) for this particular configuration of the demo to
 * work. Other than this (see the URL below), the demo would work on any platform (UNIX, MS, Mac, Novell, etc.).
 * 
 * We simply get a JDBC connection to the local Database server via ODBC, create a Statement from that, and a ResultSet with its
 * Query set to a selection of three items from a database table, and print the results in a while loop as they come in from the
 * database.
 */
public class JDBCQuery {
 
    public static void main(String[] av) {
	try {
	    System.out.println("Loading Driver (with Class.forName)");
	    // Load the jdbc-odbc bridge driver
	    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 
	    // Enable logging
	    // DriverManager.setLogStream(System.err);
 
	    System.out.println("Getting Connection");
	    Connection conn = DriverManager.getConnection("jdbc:odbc:exampleshow", "", ""); // user, passwd
 
	    // Any warnings generated by the connect?
	    checkForWarning(conn.getWarnings());
 
	    System.out.println("Creating Statement");
	    Statement stmt = conn.createStatement();
 
	    System.out.println("Executing Query");
	    ResultSet rs = stmt.executeQuery("SELECT * FROM pet");
 
	    System.out.println("Retrieving Results");
	    int i = 0;
	    while (rs.next()) {
 
		System.out.println("Retrieving Pet ID");
		int x = rs.getInt("id");
		System.out.println("Retrieving Name");
		String s = rs.getString("name");
 
		System.out.println("ROW " + ++i + ": " + x + "; " + s + "; " + ".");
 
	    }
 
	    rs.close(); // All done with that resultset
	    stmt.close(); // All done with that statement
	    conn.close(); // All done with that DB connection
 
	} catch (ClassNotFoundException e) {
	    System.out.println("Can't load driver " + e);
	} catch (SQLException e) {
	    System.out.println("Database access failed " + e);
	}
    }
 
    // Format and print any warnings from the connection
    private static void checkForWarning(SQLWarning warn) throws SQLException {
 
	// If a SQLWarning object was given, display the
	// warning messages. Note that there could be
	// multiple warnings chained together
 
	if (warn != null) {
	    System.out.println("*** Warning ***\n");
	    while (warn != null) {
		System.out.println("SQLState: " + warn.getSQLState());
		System.out.println("Message:  " + warn.getMessage());
		System.out.println("Vendor:   " + warn.getErrorCode());
		System.out.println("");
		warn = warn.getNextWarning();
	    }
	}
    }
}

[edit] What Result You Can Get

Run the program, you will get:


Loading Driver (with Class.forName)
Getting Connection
Creating Statement
Executing Query
Retrieving Results
Retrieving Pet ID
Retrieving Name
ROW 1: 1; Dog; .
Retrieving Pet ID
Retrieving Name
ROW 2: 2; Cat; .
Retrieving Pet ID
Retrieving Name
ROW 3: 3; Panda; .


[edit] Required External Libraries and/or Files for this Java Example

In order to run this example, you should create a ODBC source, with name "exampleshow".

Here's how to create ODBC source exampleshow:

  1. Create a Database in MySQL server, name it exampleshow
  2. Created a table, name it pet
  3. Input some demo data into the table pet.
  4. Create ODBC source, name it exampleshow, and point it to Database exampleshowin MySQL

You can finish the step2 & step3 with the following SQL script:

CREATE TABLE pet (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(100) DEFAULT NULL,
  PRIMARY KEY  (id)
); 
 
 
INSERT INTO pet VALUES (1,'Dog');
INSERT INTO pet VALUES (2,'Cat');
INSERT INTO pet VALUES (3,'Panda');

In this example, you may need the following software:


[edit] How to Run this Java Example Program

We recommend running this Java example program with Eclipse.

For assistance in working with Eclipse, please see How to Run Java Program with Eclipse.

It's fairly easy.



[edit] Question & Answer

Any question?

Click edit and post your question or answer here.


Personal tools