JDBC访问数据库

来自CloudWiki
跳转至: 导航搜索

JDBC连接数据库的流程

  1. 加载驱动:提前下载驱动包,加入到项目之中
  2. 注册驱动:在Java程序中注册要使用的驱动程序。
  3. 创建连接:通过DriverManager类创建数据库连接对象Connection。
  4. 创建Statement对象:为执行静态 SQL 语句做准备。
  5. 调用Statement对象:调用Statement对象的相关方法执行相对应的 SQL 语句。
  6. 关闭数据库连接


用JDBC实现查询功能

下面通过一个例子来看一下JDBC访问数据库的代码编写方法,该例用于显示所有用户的账号,姓名和城市信息。具体代码如下:

加载指定数据库的驱动程序

Java 连接 MySQL 需要驱动包,最新版下载地址为:http://dev.mysql.com/downloads/connector/j/,解压后得到jar库文件,然后在对应的项目中导入该库文件。

你可以从群邮件里下载MySQL驱动 jar 包:mysql-connector-java-5.1.39-bin.jar

连接MySQL 8.0 时需注意如下问题:https://www.cnblogs.com/null-0/p/9426045.html

导入数据库驱动程序

Eclipse导入数据库驱动程序

考试时连不上数据库,多半是这个jar包没加载 !考试时连不上数据库,多半是这个jar包没加载 !考试时连不上数据库,多半是这个jar包没加载 !

配置数据库远程访问

以阿里云主机为例:MySQL远程登陆

创建测试数据

接下来我们在 MySQL 中创建 cloud 数据库,并创建 user 数据表,表结构如下:

mysql> create database cloud;
    
Query OK, 1 row affected (0.00 sec)

mysql> use cloud;
Database changed
mysql>  CREATE TABLE IF NOT EXISTS `user`(
   `id` INT UNSIGNED AUTO_INCREMENT,
   `name` VARCHAR(100) NOT NULL,
   `password` VARCHAR(40) NOT NULL,
   PRIMARY KEY ( `id` )  
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql>  CREATE UNIQUE INDEX uname on user(name);
Query OK, 0 rows affected (0.25 sec)
Records: 0  Duplicates: 0  Warnings: 0

插入一些数据:

mysql> INSERT INTO `user` (name,password) VALUES ('ma', '123456');
Query OK, 1 row affected (0.12 sec)

mysql> INSERT INTO `user` (name,password) VALUES ('liu', '123457');
Query OK, 1 row affected (0.12 sec)

</nowiki>

对客户机授权:

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的root用户密码' WITH GRANT OPTION;

windows下MySQL 忘记初始密码:https://www.cnblogs.com/hellojesson/p/5972950.html

连接数据库

package test;
import java.sql.*;

public class Main3 {
	//JDBC 驱动名及数据库 URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
    static final String DB_URL = "jdbc:mysql://localhost:3306/cloud?characterEncoding=utf8";
 // 数据库的用户名与密码,需要根据自己的设置
    static final String USER = "root";
    static final String PASS = "000000";
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		Connection conn = null;
        Statement stmt = null;
        
            // 注册 JDBC 驱动
            Class.forName("com.mysql.jdbc.Driver");
        
            // 打开链接
            System.out.println("连接数据库...");
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
            if(conn != null){
            	System.out.println("MySQL连接成功!");
            }
	}

}


参考文档: [1] http://www.runoob.com/java/java-mysql-connect.html

JDBC核心组件

JDBC API主要位于JDK中的java.sql包中(之后扩展的内容位于javax.sql包中),主要包括:

DriverManager类

主要负责加载各种不同的数据库驱动程序(Driver),并根据不同的请求,向调用者返回相应的数据库连接(Connection)。其常用方法如下:

registerDriver(driver);//注册驱动对象 
Connection getConnection(url,user,password);//获取连接对象

Driver接口

驱动程序接口,所有具体的数据库系统厂商要必须实现此接口,形成自己特有的驱动程序包。

装载驱动的语句是Class.forName("驱动类")。

Connection接口

应用程序和数据库的连接,在加载驱动之后,使用url、username、password三个参数,创建和具体数据库系统的连接实例。

例如,获取MySQL连接对象的语句如下:

String url = "jdbc:mysql://localhost:3306/goods";
String user = "root", pwd = "123456";
Connection conn = DriverManager.getConnection(url,user,pwd);

其中,数据库的URL一般由协议名+数据库系统标识+IP地址(域名)+端口+数据库名称组成,用户名和密码是指登录数据库时所使用的用户名和密码。

  • Statement接口:用于执行静态的sql语句(单次执行),通过Connection对象创建实例。
 Statement stmt=conn.createStatement(); //创建Statement对象

其常用方法如下:

  • execute(sql)方法
若sql是查询语句且有结果集则返回true;若是非查询语句或者没有结果集则返回false。例如,boolean flag = stmt.execute(sql); 
  • executeQuery(sql)方法
执行查询语句,并返回结果集。例如,ResultSet rs = stmt.executeQuery(sql); 
  • executeUpdate(sql)方法
执行DML语句,并返回影响的记录数。例如,int count = stmt.executeUpdate(sql);
  • PreparedStatement接口
是Statement接口的子接口,用于执行预编译sql语句,一般包含动态参数。
  • CallableStatement接口
是PreparedStatement接口的子接口,用于执行存储过程。
  • ResultSet接口
执行查询SQL语句后返回的结果集,由ResultSet接口接收。

常见的处理方式是遍历或存在性判断(如登录功能)。例如,

String sql = "select * from admin"; 
ResultSet rs = stmt.executeQuery(sql); 
while (rs.next()) { 
        out.println(rs.getInt("id")+"," +rs.getString("username") ); 
} 

查询的结果存放在ResultSet对象的行结构中,指针的最初位置在首行之上,可以使用next()方法在行间移动;使用getXXX( )方法取得字段的内容,其参数可以是字段索引(从1开始),也可以是字段名(如getInt(“id”)表示获取当前行内字段名为id的数据,getString(2)表示获取当前行内第2个字段的字符串数据)。

SQLException类

代表在数据库连接的建立、关闭及SQL语句的执行过程中发生的异常。

知识点提炼

  1. JDBC的核心组件:DriverManager、Connection、Statement、ResultSet
  2. JDBC连接数据库的步骤:
(1)导入驱动
(2)加载驱动:Class.forName
(3)获取连接:Connection
(4)构建语句对象:Statement
(5)执行SQL语句,并返回结果:ResultSet
(6)释放资源:close

返回 Java程序设计