• 使用 Java 进行 MySQL 开发 (摘自:MySQL for Linux on POWER,第 2 部分: 开发应用)


    使用 Java 进行 MySQL 开发

    有一类非常广泛的话题:与 MySQL 等关系型数据库通信的基于 Java™ 的多层应用程序。本节介绍了一个非常简单的示例,使用本地 Java 应用程序连接到 MySQL。

    为了让 Java 程序能够与特定的数据库进行通信,您要有一个用于那个数据库的 Java Database Connectivity(JDBC)驱动程序。与大部分主流的关系数据库管理系统(Relational Database Management Systems,RDBMS)一样,MySQL 也有其自己的 JDBC 驱动程序,当前包括:

    • 来自 MySQL AB 的 MySQL Connector/J
    • Resin JDBC 驱动程序

    MySQL Connector/J 是用于 MySQL RDBMS 的 Sun 的 JDBC 3.0 API 实现,是用于 MySQL 的官方 JDBC 驱动程序。它是百分之百使用 Java 编写的,因此可以运行于任何具备适当 JVM 环境的操作系统中,包括 POWER 上 Linux 发行版本。所以,此示例使用的是 Connector/J 驱动程序。它是类型 IV JDBC 驱动程序,已知能够在 POWER 上 Linux 中应用于多种 Web 应用程序服务器,比如 IBM WebSphere、BEA WebLogic、Apache Tomcat、JBoss,还有很多。

    当然,除了需要用于 MySQL 的 JDBC 驱动程序以外,您还需要 JDK 本身。撰写本文时,IBM 为用于 POWER 和 PPC 体系结构的 Linux 所提供的最新版本是 JDK 1.4.2,既有 32-位 的也有 64-位的。可以在线获得针对 Java 技术的 IBM Developer Kits(见 参考资料)。

    此示例展示的基本代码将连接到 MySQL 数据库并执行查询。

    下面是本示例的完整的 Java 代码:


    清单 2. Java 代码示例

                import java.io.*;
                import java.util.*;
                import java.sql.*;
                public class Java_MySQL
                {
                public static void display_rs(ResultSet rs) throws SQLException
                {
                try{
                ResultSetMetaData rsmd = rs.getMetaData();
                for (int i = 1; i <= rsmd.getColumnCount(); ++i)
                System.out.print("\t\t\t" + (rsmd.getColumnName(i)).toUpperCase() );
                System.out.println();
                while ( rs.next() )
                {
                for (int j = 1; j <= rsmd.getColumnCount(); ++j)
                {
                Object obj = rs.getObject(j);
                System.out.print("\t\t\t" + obj.toString());
                }
                System.out.println();
                }
                }
                catch (SQLException E) {
                System.out.println("SQLException: " + E.getMessage());
                System.out.println("SQLState:     " + E.getSQLState());
                System.out.println("VendorError:  " + E.getErrorCode());
                E.printStackTrace();
                System.exit(1);
                }
                }
                public static void main(String args[])
                {
                Statement statement = null;
                Connection connection = null;
                ResultSet resultset;
                String query, prompt, input;
                int choice = -1;
                try {Class.forName("com.mysql.jdbc.Driver").newInstance();}
                catch (Exception E) {
                System.err.println("Unable to load driver.");
                E.printStackTrace();
                System.exit(1);
                }
                try {
                String url="jdbc:mysql://localhost/CONTRACTING";
                String username="username";
                String password="password";
                connection=DriverManager.getConnection(url, username, password);
                }
                catch (SQLException E) {
                System.out.println("SQLException: " + E.getMessage());
                System.out.println("SQLState:     " + E.getSQLState());
                System.out.println("VendorError:  " + E.getErrorCode());
                E.printStackTrace();
                connection=null;
                System.exit(1);
                }
                prompt = "\n\t\t\t1. Show contents of the table JOB\n" +
                "\t\t\t2. Exit\n\n";
                while(true)
                {
                System.out.println(prompt);
                try {
                BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
                input = in.readLine();
                choice = Integer.parseInt(input);
                }
                catch (Exception e) {
                e.printStackTrace();
                System.exit(1);
                }
                try {
                switch (choice)
                {
                case 1:
                query="SELECT * FROM JOB;";
                statement = connection.createStatement();
                resultset = statement.executeQuery(query);
                display_rs(resultset);
                break;
                case 2:
                System.out.println("Bye!");
                System.exit(0);
                default:
                System.err.println("Invalid value entered!");
                }
                }
                catch (SQLException E) {
                System.out.println("SQLException: " + E.getMessage());
                System.out.println("SQLState:     " + E.getSQLState());
                System.out.println("VendorError:  " + E.getErrorCode());
                E.printStackTrace();
                connection=null;
                System.exit(1);
                }
                }
                }
                }
                

    函数 display_rs() 中有显示 ResultSet 对象的标准代码。与 MySQL 数据库的连接在 main() 函数中完成。

    在 MySQL Connector/J 中实现 java.sql.Driver 的类的名称是 com.mysql.jdbc.Driverorg.gjt.mm.mysql.Driver 类名可以用于保持与较老版本的向后兼容。

    让 JVM 可以使用 Connector/J JDBC 驱动程序的最常见方式是,在 CLASSPATH 变量中包含 mysql-connector-java-[version]-bin.jar 文件的路径。

    下面给出了字符串,接着是通常的 JDBC URL 格式:

    String url="jdbc:mysql://localhost/CONTRACTING";
                

    成功地连接到 MySQL 服务器和数据库后,您就可以执行简单的查询,如下:

    1. Show contents of the table JOB
                2. Exit
                

    选项“1”将显示出查询 “SELECT * FROM JOB”的结果。

    JOB_CODE        JOB_NAME                     JOB_HOUR_CHRG
                200             Application Programmer       35.48
                201             Database Administrator       38.50
                202             Technical Support            27.00
                207             Database Designer            49.99
                

    第二个选项将生成 JOB 表的内容,第三个选项将关闭程序。

    此示例的编译和运行使用的是 IBM 为用于 POWER 和 PPC 体系结构的 Linux 所提供的 64-位 JDK 1.4.2。

  • 相关阅读:
    windows server 2008 r2 切换windows 7主题方法
    JAVA环境安装
    Oracle 11gR2 安装教学
    webmin-1.810 安装
    Windows Squid 安装配置
    Zyxel Switch-How to block a fake DHCP server without enabling DHCP snooping?
    Java介绍
    cookies和session区别
    牛刀小试之Django二
    小试牛刀之Django
  • 原文地址:https://www.cnblogs.com/cy163/p/1271795.html
Copyright © 2020-2023  润新知