database.sarang.net
UserID
Passwd
Database
ㆍDBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DBMS Tutorials 198 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 198
Getting Started With JDBC
작성자
정재익(advance)
작성일
2001-12-19 22:45
조회수
4,715

Getting Started With JDBC

 

By John Papageorge

(August 1997)

 

원본출처 : http://developer.java.sun.com/servlet/PrintPageServlet?url=http%3A//developer.java.sun.com/developer/technicalArticles/Interviews/StartJDBC/

 

In the last several months there has been a lot of excitement over JDK 1.1 features, such as RMI, Beans, the new event model, and internationalization. But according to Aaron Alpar, there has not been a whole lot of talk about the JDBC API that is now standard with the 1.1 release. And he thinks it deserves some loving attention.

 

"JDBC is the most useful tool in the JDK, and the least understood," Alpar insists.

 

He believes the JDBC, a simple set of classes for accessing relational databases from Java with a class library that mirrors the ODBC from Microsoft, has been ignored because database access is not new when compared to RMI and the new event model. He also believes it hasn't gotten its due because many vendors, rather than waiting for JDBC to be an official part of the 1.1 release, have come up with JDBC-compliant APIs.

 

"If you visit the JavaSoft web site looking for something that will allow you to write Java applications to your Sybase database, you're likely to run into a dizzying array of options; from direct desktop drivers, to middleware, to application-server solutions all providing JDBC support," Alpar says.

 

Keep in mind that JDBC database access is not limited to some of the larger vendors of database servers, such as Informix, Oracle, Sybase, and Microsoft. Database access from JDBC equally applies to smaller desktop database systems, such as xBase files, FoxPro, MS Access, and mSQL. JDBC, through ODBC, even works with text files, and Excel spreadsheets.

 

Alpar, who is currently on a 14-city tour promoting Java, plans to celebrate the JDBC. "I'm going to discuss the JDBC API," he says. "It's a good foundation for understanding the current state-of-the art in Java database access. It will also help users understand the features in some of the higher-level APIs, such as JSQL."

 

Within JDBC there are four particularly important classes: DriverManager, Connection, PreparedStatement, and ResultSet. Each class corresponds to a indispensable phase of database access:

 

The DriverManager loads and configures your database driver on your client.

 

The Connection class performs connection and authentication to your database server using URLs.

 

PreparedStatement moves SQL to the database engine for preprocessing and eventually execution.

 

The ResultSet class allows for the inspection of results from "select" statements.

Alpar explains that each class relies on it's previous class for instance creation. For example, an instance of Connection cannot exist without being created from the DriverManager.

Below, Alpar shows you how to perform the basics. You will find that simple operations, like inserting a row, are simple to perform. When you get into more complex operations, such as passing out parameters from stored procedures, your JDBC code will get more complicated.

 

Because JDBC can work with a great number of drivers, there's a class called the DriverManager to load drivers into your environment. Generally, you will only need the driver manager once, in the beginning of the main or init section of your application or applet, respectively.

 

Example In my examples, I'll be using dbANYWHERE from Symantec with tables from a fictitious order entry system.

  String driverName = "symantec.itools.db.jdbc.Driver";
  Properties systemProperties = System.getProperties();
  systemProperties.put("jdbc.drivers", driverName);

There's only one method that you really need to know for the DriverManager, and that's getConnection. Connection objects are created from the class DriverManager. Connection objects are driven by URLs. For a more complete discussion on how to form JDBC URLs, I recommend that you read the URL specifications from JDBC Guide: Getting Started from the JavaSoft web site.

The DriverManager is very politically correct about how it finds the right driver for the URL specified in getConnection. It's not dictatorial but rather operates by voluntary delegation, where JDBC visits each driver registered with the DriverManager and asks, "will you connect to this URL?" If the answer is no, the next driver is asked and the process continues, otherwise the driver attempts to contact the URL:

  aConnection = aDbAnywhereDriver.getConnection
  ("jdbc:dbaw://localhost:8889/tutorial", "guest", "guestpass");

In the preceding example, "jdbc" is the main protocol, "dbaw" is the sub protocol, and is followed by the hostname "localhost" and port number "8889" of the dbANYWHERE server.

As mentioned before, each class is responsible for creating the next class, as in the case of the PreparedStatement objects that are created from a Connection instance:

  try {
    aPreparedStatement = 
    aConnection.prepareStatement ( 
      "select order_id, 
      description from order_items" );
  } catch ( SQLException e ) {
    System.out.println (
     e.messageString() );
  }

Retrieving the information is a fairly straightforward process of fetching the row and retrieving the row values column by column:

  try {
    // Fetch the next row
    aPackageResultSet.next();
    // then get the first value by column position 
    aPackageResultSet.getDouble (1);
    // and then the next value by column name.
    aPackageResultSet.getString ("description");
  } catch ( SQLException e ) {
    System.out.println ( e.messageString() );
  }

Note that first, I'm retrieving values out of the database using what JavaSoft likes to call getXXX methods. GetXXX is simply shorthand for a typed accessor method such as getString, getDouble, or getInteger. Second, I've used two forms of those accessor methods. One method retrieves values by column index starting at 1. The other method retrieves values by column name. The first method is much more efficient, however in my opinion, more open to producing erroneous code.

PreparedStatement objects can also take in-parameters, which are parameters that can be passed into a SQL statement after the statement has been prepared on the database server and before the statement is executed. By preparing statements in advance, I can then execute them over an over again without having to resend and reparse the statement on the database server. This technique is a big resource saver for repetitive SQL statements. I've used an example of an insert statement below:

  PreparedStatement anInsertStatement = 
    aConnection.prepareStatement (
    "insert into order_items ( order_id, line_id, description ) 
        values (?, ?, ? )" );

    anInsertStatement.setDouble ( 1, 100.00 );
    anInsertStatement.setDouble ( 2, 1.00 );
    anInsertStatement.setString ( 3, "tennis racket" );
    anInsertStatement.execute();

The preceding examples demonstrate the basics of how to get things done in JDBC. I've shown you the basics of the four classes, DriverManager, Connection, PreparedStatement, and ResultSet. There are also features, including transaction management, support for out parameters, and many more. JavaSoft, in their usual style, has made an excellent set of JDBC documentation available at no cost on their Web site. (Editors note: We didn't pay this guy to say these nice things. Really!) There you'll find a simple set of classes for accessing relational databases from Java and the class library mirrors the ODBC API from Microsoft, a brief description, and how to use them. And that's really most of what JDBC is all about.

 

------------------------------------------------------------------

 

Of Java, Databases, and Really Cool Dead Guys

Aaron Alpar explains JDBC, as well as where he goes for programming explanation.

 

Ever Feel Like Life Is Just Scrolling By?

In a Java-code sidebar, Alpar shows you how to use JDBC to implement an aspect of cursor control.

[Top]
No.
제목
작성자
작성일
조회
206JDBC driver type
정재익
2001-12-25
4967
205Advanced JOIN Technique
정재익
2001-12-25
4620
203IBM-Tuxedo-Jolt연결
정재익
2001-12-22
8025
198Getting Started With JDBC
정재익
2001-12-19
4715
185GDBC 설치기
정재익
2001-12-16
4489
176Backup & Recovery
정재익
2001-12-14
7649
174DW 데이터 변환
정재익
2001-12-14
6046
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다