2.1.3 JDBC执行SQL语句

优质
小牛编辑
138浏览
2023-12-01

下面给出一个例子来演示一下如何使用JDBC来执行各种SQL语句,其中包括DDL语句(建立数据库和数据表)、INSERT语句和SELECT语句。

1.程序分析说明

本程序首先创建一个mydb数据库(如果存在就不创建),然后创建一个用于保存图书信息的表t_books(如果存在,删除后再创建),最后向表中插入两条记录,并查询和显示其中的第2条记录。

2.代码编写

本程序使用了Statement接口的execute方法来执行DDL和INSERT语句,使用executeQuery方法来执行SELECT语句,程序的实现代码如下:

package chapter2;

import java.sql.*;

public class ExecuteDemo
{
    public static void main(String[] args) throws Exception
    {
        // 装载JDBC驱动
        Class.forName("com.mysql.jdbc.Driver");
        // 获得Connection对象
        Connection conn = DriverManager
                .getConnection("jdbc:mysql://localhost/?characterEncoding=UTF8",
                       "root", "1234");
        // 获得Statement对象
        Statement stmt = conn.createStatement();
        String createDB = "CREATE DATABASE IF NOT EXISTS mydb DEFAULT CHARACTER SET UTF8";
        String dropTable = "DROP TABLE IF EXISTS mydb.t_books";
        String createTable = "CREATE TABLE  mydb.t_books (id int unsigned NOT NULL"
                + " auto_increment, name varchar(50) NOT NULL,isbn varchar(20)"
                + "NOT NULL, author varchar(20) NOT NULL,price int unsigned,"
                + " PRIMARY KEY  (id)) ENGINE=InnoDB DEFAULT CHARSET=UTF8";
        String insertData1 = "INSERT INTO mydb.t_books(name,isbn,author,price) values("
                + "'人月神话', '6787102165345', '布鲁克斯', 52)";
        String insertData2 = "INSERT INTO mydb.t_books(name,isbn,author,price) values("
                + "'Ajax基础教程', '5643489212407', '阿斯利森', 73)";
        String selectData = "SELECT * FROM mydb.t_books where id=2";
        // 建立数据库、表,并插入数据
        stmt.execute(createDB);
        stmt.execute(dropTable);
        stmt.execute(createTable);
        stmt.execute(insertData1);
        stmt.execute(insertData2);
        // 从数据库中查询数据
        ResultSet result = stmt.executeQuery(selectData);
        // 显示查询结果
        while (result.next())
        {
            System.out.print(result.getString("id") + "   ");
            System.out.print(result.getString("name") + "   ");
            System.out.print(result.getString("isbn") + "   ");
            System.out.print(result.getString("author") + "   ");
            System.out.println(result.getInt("price"));
        }
        // 关闭Statement和Connection对象
        stmt.close();
        conn.close();
    }
}

在上面的代码中由于数据库mydb可能不存在,所以在连接字符串中并没有指定数据库名。因此,在使用mydb中的表时必须指定数据库名,如代码中的mydb.t_books。

3.程序总结

通过上面的示例,读者可以对JDBC操作数据库的基本流程和基本方法有了一个初步的了解。在本章接下来的部分,将详细讲解JDBC API的核心功能的使用方法。