Original address: http://blog.9cbs.net/chensheng913/Archive/2004/07/14/41192.aspx
1.1 What is JDBCTM? JDBCTM is a Javatm API for executing the SQL statement. JDBC itself is a trademark name instead of an abbreviated word; however, JDBC is often considered to be a "Java Database Connectivity"). It consists of a set of classes and interfaces written in Java programming languages. JDBC provides a standard API for tools / database developers, enabling them to write database applications with pure Java APIs. With JDBC, send SQL statements to various relational databases is a very easy thing. In other words, there is a JDBC API, you don't have to write a program for accessing the Sybase database, and write a program for accessing the Oracle database, and write another program for accessing the Informix database, and so on. You only need to write a program with JDBC API, which can send SQL statements to the corresponding database. Moreover, using the application written in Java programming language does not need to worry about writing different applications for different platforms. Combine Java and JDBC will allow programmers to write only a program to run on any platform. Java has rugged, safe, easy to use, easy to understand and automatically downloaded from the network, is an outstanding language to write database applications. The required method is only a method of dialogue between the Java application and various databases. JDBC is a mechanism for such uses. JDBC extends the functionality of Java. For example, using Java and JDBC APIs can publish a web page containing the applet, and the information used by the applet may come from a remote database. Enterprises can also use JDBC to connect all staff into one or more internal databases over Intranet (even if the computers used by these staff have various operating systems such as Windows, Macintosh, and UNIX). As more and more programmers began using Java programming languages, the requirements from Java in conjunction with the database are also increasing. MIS administrators like Java and JDBC combination because it makes information spread easy and economical. Companies can continue to use them to install the database and can easily access information, even if this information is stored on different database management systems. The new program is very short. Installation and version control will be greatly simplified. Programmers can only write only one version or only update once, then put it on the server, and anyone can get the latest version of the application. For business sales information services, Java and JDBC provide better ways to obtain information updates for external customers. 1.1.1 What is the use of JDBC? Simply put, JDBC can do three things: establish a connection with the database, send the SQL statement, and process the results. The following code segment gives the basic example of the above three steps: Connection Con = DriverManager.getConnection ("JDBC: ODBC: Wombat", "Login", "Password"); statement stmt = con.createstatement (); ResultSet RS = STMT .ExecuteQuery ("SELECT A, B, C from table1"); while (rs.next ())
System.out.println (Rs.getstring ("a") " rs.getstring (" b ") " " "
Rs.getstring ("c")); 1.1.2 JDBC is a low-level API, the basic JDBC of the advanced API is a "low" interface, that is, it is used to call the SQL command directly. In this regard, its function is excellent and is easy to use than other databases, but it is also designed as a foundation interface, which can establish advanced interfaces and tools. The advanced interface is an "friendly" interface for the user. It is a more easy to understand and more convenient API, which is converted to a low-level interface such as JDBC behind the scenes. When writing this article, two JDBC-based advanced APIs are being developed: an embedded SQL for Java. At least one provider has planned to write it. DBMS implementation SQL: a language specially designed to use in combination with the database. JDBC requires a SQL statement to pass to the Java method as a string. Instead, the embedded SQL preprocessor allows programmers to use the SQL statement directly with Java. For example, Java variables can be used in SQL statements for accepting or providing SQL values. Then, the embedded SQL preprocessor converts the mixture of this Java / SQL into Java via JDBC calls. Direct mapping of relational database tables to Java classes. Both JavaSoft and other providers claim to implement the API. In such an "object / relationship" map, each row in the table corresponds to an instance of the class, and the value of each column corresponds to an attribute of the instance. Thus, the programmer can operate directly to the Java object; the SQL call required to access data will be automatically generated in "cover". More complex mappings can also be provided, such as combining rows in multiple tables into a Java class. As people's interest in JDBC is increasing, more and more developers have been using JDBC-based tools to make the program's writing easier. Programmers have been writing to make the end user's access to the database more simple applications. For example, an application provides a menu that selects a database task. After the task is selected, the application will give prompts and blank to fill in the information required to perform the selected task. After the required information is entered, the application will automatically call the desired SQL command. With the assistance of such a program, even if the user does not understand the syntax of SQL, the database task can also be performed. 1.1.3 Comparison of JDBC and ODBC and Other APIs Currently, Microsoft's ODBC (Open Database Connection) API may be the most widely used and used to access programming interfaces for relational databases. It can connect almost all databases on almost all platforms. Why does Java do not use ODBC? The answer to this question is: Java can use ODBC, but it is best to use the JDBC-ODBC bridge with the help of JDBC. This will then say later. The problem now has become: "Why do you need JDBC? The answer is as follows: ODBC is not suitable for use directly in Java because it uses a C language interface. There are many disadvantages from Java to call local C code in security, implementation, robustness, and automatic portability of procedures. Field translation from the ODBC API to Java API is not advisable. For example, Java does not have a pointer, while ODBC is widely used (including pointers "void *"). You can imagine JDBC to be converted to ODBC-oriented interface, and object-oriented interfaces are easier to receive for Java programmers. ODBC is difficult to learn. It is mixed with simple and advanced features, and even for simple queries, its options are also extremely complicated.
Instead, JDBC should ensure the simple functionality of simple functions, while the advanced features are allowed when necessary. Enable the "Pure Java" mechanism requires Java API like JDBC. If you use ODBC, you must manually install the ODBC driver manager and driver on each client. If you write a JDBC driver using Java, the JDBC code can be automatically installed, transplanted, and assured security on all Java platforms (from network computers to large machines). In summary, JDBC API is a natural Java interface for basic SQL abstractions and concepts. It is built on ODBC instead of from scratch. Therefore, the programmer familiar with ODBC will find that JDBC is easy to use. JDBC retains the basic design characteristics of ODBC; in fact, both interfaces are based on the X / Open SQL CLI (call-level interface). The biggest difference between them is that JDBC is optimized based on Java style and advantages, making it easier to use. Recently, Microsoft introduced new APIs outside ODBC: RDO, ADO, and OLE DB. These designs are the same as JDBC in many ways, ie they are object-oriented database interfaces and are based on classes that can be implemented on ODBC. However, in these interfaces, we have not seen that there is a special feature to choose them to replace ODBC, especially in the case of the ODBC driver has established a relatively complete market. Their most is also a decoration in ODBC. This is not to say that JDBC does not need to be developed from its original version; however, we feel that most new features should be induced into the object / relationship maps and embedded SQLs such as the previous section. Advanced API. 1.1.4 Two-layer model and three-layer model JDBC API support both two-layer models of database access, and also supports three-layer models. In two layers models, Java Applets or applications will talk directly to the database. This will require a JDBC driver to communicate with the accessed specific database management system. The user's SQL statement is sent to the database, and the result will be sent back to the user. The database can be located on another computer, and the user is connected to the above. This is called client / server configuration, where the user's computer is a client, providing a computer for a server for a server. The network can be intranet (it can connect the company staff) or the Internet. In the three-layer model, the command first is sent to the "intermediate layer" of the service, and then it is sent to the database by it. The database is handled on the SQL statement and send the result back to the intermediate layer, and the intermediate layer is sent back to the user. The MIS executives found that the three-layer model was very attractive because the intermediate layer can be used to control the type of access to the company's data and the available update. Another benefit of the intermediate layer is that users can utilize the easy-to-use advanced APIs, while the intermediate layer will convert it to the corresponding low-level calls. Finally, in many cases the three-layer structure can provide some performance benefits. So far, the intermediate layer is usually written in a C or C language, and these languages are executed faster. However, with the introduction of the optimization compiler (which converts Java byte code to efficient machine-specific machine-specific, the intermediate layer will become increasingly practical. This will be a big progress that allows people to make full use of the advantages of Java (such as rugged, multi-threaded and security). JDBC is very important for accessing the database from the intermediate layer of Java. 1.1.5 Single Structured Query Language (SQL) is a standard language for accessing the relational database.
Difficulties are: Although most DBMS (database management systems) use standard SQLs for their basic functions, they do not meet the recent standard SQL syntax or semantics defined for more advanced features. For example, not all databases support storage programs or external connections, and databases that support this feature are inconsistent. That of the true standard in SQL is able to expand to include more and more functions. But at the same time, the JDBC API must support existing SQL. One way to solve this problem is to allow any query string to be transferred to the DBMS driver involved. This means that the application can use any more SQL features, but it must take such a risk: it is possible to make an error on some DBMS. In fact, the application query does not even have to be SQL, or it can be a dedicated organ for SQL designed for a specific DBMS (eg, document or image check). The second method of the JDBC handling the SQL consistency problem is to provide an ODBC style essential clause. This will be discussed in Section 4.1.5 "SQL Swordic Syntax". Syntax provides a standard JDBC syntax for several common SQL disagreements. For example, there is a syntax for the call to date text and stored procedures. For complex applications, JDBC uses a third method to process SQL consistency issues. It uses the DatabaseMetadata interface to provide descriptive information about DBMS, allowing the application to adapt to each DBMS requirements and functions. Since the JDBC API will be used as the foundation API of the Advanced Database Access Tool and API, it must also pay attention to all of its upper buildings. "JDBC Standard TM" represents the standard level of the JDBC function that the user can rely on. To use this description, the driver must at least support ANSI SQL-2 Entrylevel (ANSI SQL-2 represents the specific list of standards in 1992 in 1992). The driver developer can use the Test Kit with JDBC API to determine if their drivers meet these standards. "JDBC Standard TM" means that the provider's JDBC implementation has passed the consistency test provided by JavaSoft. These consistency tests will check all the classes and methods defined in JDBCAPIs, and check whether the program has SQL Entry Level feature as much as possible. Of course, these tests are not complete, and JavaSoft currently does not intend to standardize the implementation of each provider. But this consistency definition can indeed provide a certain credibility of JDBC implementation. With more and more database providers, connection providers, Internet providers, and application programmers accepted by JDBC API, JDBC is also rapidly becoming the standard of Java database access. 1.2 JDBC products When writing this article, there are several JDBC-based products that have been developed or are being developed. Of course, the information in this section will soon become outdated information. Therefore, please refer to the JDBC website for the latest information, you can start browsing from the following URL: http://java.sun.com/products/jdbc1.2.1 JavaSoft Framework Javasoft provides three JDBC product components, they are Java Development Toolkit (JDK) part:
JDBC Driver Manager, JDBC Driver Test Kit, and JDBC-ODBC Bridge. The JDBC driver manager is the pillar of the JDBC architecture. It is actually very small, it is very simple; its main role is to connect the Java application to the correct JDBC driver, and then exit. The JDBC Driver Test Kit provides a certain credibility to make the JDBC driver run your program. Only the driver that passes the package through the JDBC driver is considered to be a JDBC standard TM. The JDBC-ODBC bridge allows the ODBC driver to be used as a JDBC driver. Its implementation provides a way for JDBC's rapid development, and its long-term goal provides a way to access certain uncommon DBMSs (if these uncommon DBMS unpreceptible JDBCs). 1.2.2 Type of JDBC Driver Our currently known JDBC driver can be divided into the following four categories: JDBC-ODBC bridge plus ODBC driver: JavaSoft bridge products provide JDBC access using the ODBC driver. Note that the ODBC binary code (in many cases also includes database client code) is loaded on each client using the driver. Therefore, this type of driver is best suited for enterprise network (this network client installation is not the main issue), or the three-layer structure of the three-layer structure written in Java. Local API - Some drivers written in Java: This type of driver converts JDBC calls on the client API to Oracle, Sybase, Informix, DB2, or other DBMS calls. Note that like a bridge driver, this type of driver requires some binary code to each customer.
JDBC Network Pure Java Driver: This driver converts JDBC to a network protocol that is independent of DBMS, and then this protocol is converted to a DBMS protocol. This network server middleware can connect its pure Java client on a variety of different databases. The specific agreement used depends on the provider. Usually, this is the most flexible JDBC driver. It is possible that all of these solutions provide products suitable for intranet. To make these products support Internet access, they must handle the security aspects of the Web, through the additional requirements of the firewall access. Several providers are adding JDBC drivers to their existing database middleware products.
Local Protocol Pure Java Driver: This type of driver converts JDBC calls directly into the network protocol used by DBMS. This will allow DBMS servers directly on the client machine to be a very practical solution for Intranet access. Since many such agreements are dedicated, the database provider will be the main source, and several providers are already doing this. Finally, we expect that the 3rd, 4 class driver will become the preferred method of accessing the database from the JDBC. The first, 2-class drivers are used as a transition scheme before the direct pure Java driver is not listed. There may be some variations for the first, 2-class drivers, which require connectors, but usually these are more uncomfortable solutions. Class 3, 4-Category The driver provides all the advantages of Java, including automatic installation (for example, downloading the driver) by using the Applet Applet using the JDBC driver.