Java之路(七):JDBC

JDBC简介

JDBC(Java Database Connected)

四种Java数据库操作形式:

1.JDBC-ODBC桥接技术(不用);
2.JDBC直接连接;
3.JDBC网络连接;
4.模拟指定数据库的通讯协议自己编写数据库操作。

几种常用的数据库:

Oracle,MySQL,SQLServer,MongoDB等

连接数据库

具体内容:

在Java之中,所有数据库操作的类和接口都保存在java.sql包中,在这个包中核心组成如下:

  • 一个类:DriverManager类;
  • 四个接口:Connection、Statement、ResultSet、PreparedStatement。
    所有的JDBC连接数据库的操作流程都是固定的,按照如下几步完成:
    1.加载数据库的驱动程序;
    2.进行数据库的连接(通过DriverManager类完成,Connection表示连接);
    3.进行数据的CRUD(Statement,PreparedStatement、ResultSet);
    4.关闭数据库操作以及连接。

加载驱动程序

  • 驱动程序:
  • Oracle驱动程序类:oracle.jdbc.driver.OracleDriver
  • 加载类使用:Class.forName(“oracle.jdbc.driver.OracleDriver”);

连接数据库

如果想要连接数据库需要提供以下几个信息(前提是数据库服务要打开)

  • 数据库的连接地址:jdbc:oracle:连接方式:主机名称:端口名称:数据库的SID
    (要连接本机的xxx数据库:jdbc:oracle:thin:@localhost:1521:xxx)
  • 数据库的用户名
  • 数据库的密码

要连接数据库必须依靠DriverManager,在此类有如下定义方法:

  • 连接数据库:
public static Connection getConnection(String url, String user, String password) throws SQLException;

在JDBC里面,每一个数据库连接都要求使用一个Connection对象进行封装,所以只要有一个新的Connection对象就表示要连接一次新的数据库。

关闭数据库

Connection接口提供有close()方法:

public void close() throws SQLException
public class JDBCDemo {
	private static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
	private static final String DBURL = "jdbc:oracle:thin:@localhost:1521:mldn";
	private static final String USER = "system";
	private static final String PASSWORD = "Cherry";

	public static void main(String[] args) throws Exception {
		// 一、加载数据库驱动程序,此时不需要实例化,因为会由容器自己负责处理
		Class.forName(DBDRIVER);
		// 二、连接数据库
		Connection conn = DriverManager.getConnection(DBURL, USER, PASSWORD);
		System.out.println(conn);
		//四、关闭数据库
		conn.close();
	}

此时的程序已经连接上Oracle数据库,可是很多时候连接不上,可能是因为:

1.监听服务出现错误

  • 监听的主机名称不是本机的计算机名称,也不要用IP地址
  • 监听配置文件路径:F:\Software\Oracle\product\12.2.0\dbhome_1\network\admin保证主机名和监听的主机名一致。

2.不能找到指定的SID
数据库的名字就是SID的名字,但是很多时候该名称不会自动注册,也就是说只有数据库名称但是没有对应的SID名称。于是可以打开数据库的网络管理工具。

Statement接口

编写数据库创建脚本

DROP TABLE member PURGE ;
DROP SEQUENCE myseq ;
CREATE SEQUENCE myseq ;
CREATE TABLE member(
    mid			NUMBER ,
    name			VARCHAR2(20) ,
    birthday		DATE 		DEFAULT SYSDATE ,
    age			NUMBER(3) ,
    note			CLOB ,
    CONSTRAINT pk_mid PRIMARY KEY(mid)
) ;

数据增加

增加数据SQL语法:INSERT INTO 表名称 (列,列,...) VALUES (值, 值,....)

package oracle;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class JDBCDemo {
	private static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
	private static final String DBURL = "jdbc:oracle:thin:@localhost:1521:orcl";
	private static final String USER = "system";
	private static final String PASSWORD = "Cherry";

	public static void main(String[] args) throws Exception {
		// 一、加载数据库驱动程序,此时不需要实例化,因为会由容器自己负责处理
		Class.forName(DBDRIVER);
		// 二、连接数据库
		Connection conn = DriverManager.getConnection(DBURL, USER, PASSWORD);
		//三、进行数据库的操作
		Statement stmt = conn.createStatement();
		
		String sql = " INSERT INTO member(mid,name,birthday,age,note) VALUES "
				+ " (myseq.nextval,'张三',TO_DATE('1997-09-15','yyyy-mm-dd'),17,'hello')" ;

		int len = stmt.executeUpdate(sql);
		System.out.println("影响的数据行:"+len);
		//四、关闭数据库
		stmt.close();
		conn.close();
	}
}

数据修改

修改数据SQL语法:UPDATE 表名称 SET 字段=值 , .... WHERE 更新条件(s)

String sql = " UPDATE member SET name='李四',birthday=SYSDATE,age=30 "
               + " WHERE mid IN(3,5,7,9,11) ";

删除数据

删除数据SQL语法:DELETE FROM 表名称 WHERE 删除条件(s)

String sql = "DELETE FROM member WHERE mid IN(10,15,20)";

数据查询

String sql = "SELECT mid,name,age,birthday,note FROM member";
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next()){
			int mid = rs.getInt("mid");
			String name = rs.getString("name");
			int age = rs.getInt("age");
			Date birthday = rs.getDate("birthday");
			String note = rs.getString("note");
			System.out.println(mid + "," + name + "," + age + "," + birthday + "," + note);
		}
		```
发布了40 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42650988/article/details/82724851