JDBC入门知识整理

JDBC:java database connectivity SUN公司提供的一套操作数据库的标准规范

JDBC与数据库驱动的关系:接口与实现的关系

JDBC规范

掌握四个核心对象

  • DriverManager:用于注册驱动
  • Connection: 表示与数据库创建的连接
  • Statement: 操作数据库sql语句的对象
  • ResultSet: 结果集或一张虚拟表

JDBC的准备工作:

JDBC规范(接口)在哪里:

 JDK中:     java.sql.*;       javax.sql.*;

数据库厂商提供的驱动:mysqll-connector-java-xxx-bin.jar文件(需要根据mysql和Java版本确定)

JDBC常用的类和接口详解

DriverManager

java.sql.Drivermanager类 : 注册驱动和创建连接

a、注册驱动

DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用

原因有2个:

> 导致驱动被注册2次,静态代码块里又注册了一次。

> 强烈依赖数据库的驱动jar

解决办法

Class.forName("com.mysql.jdbc.Driver");

b.与数据库建立连接

根据API

第一种方式:

static Connection getConnection(String url, String user, String password)

试图建立到给定数据库 URL 的连接。

 

getConnection("jdbc:mysql://localhost:3306/test1", "root", "123456");

URL:SUN公司与数据库厂商之间的一种协议。

jdbc:mysql://localhost:3306/day06

协议 子协议  IP :端口号 数据库名

mysql: jdbc:mysql://localhost:3306/test1 或者 jdbc:mysql:///test1(默认本机连接)

第二种方式:

Properties info = new Properties();//要参考数据库文档

info.setProperty("user", "root");

info.setProperty("password","root");

 

getConnection(String url, Properties info)

第二种方式

getConnection(String url)

DriverManager.getConnection("jdbc:mysql://localhost:3306/test1?user=root&password=123456");

Connection接口

接口的实现在数据库驱动中。所有与数据库交互都是基于连接对象的。

 

Statement接口

操作sql语句,并返回相应结果的对象

接口的实现在数据库驱动中。用于执行静态 SQL 语句并返回它所生成结果的对象。

  • ResultSet  executeQuery(String sql) 根据查询语句返回结果集。只能执行select语句。
  • int executeUpdate(String sql) 根据执行的DML(insert update delete)语句,返回受影响的行数
  • boolean execute(String sql)  此方法可以执行任意sql语句。返回boolean值,表示是否返回ResultSet结果集。仅当执行select语句,且有返回结果时返回true, 其它语句都返回false;

ResultSet接口:

结果集(客户端存表数据的对象)

封装结果集

提供一个游标,默认游标指向结果集第一行之前。

调用一次next(),游标向下移动一行。

提供一些get方法。

封装数据的方法

Object getObject(int columnIndex); 根据序号取值,索引从1开始

Object getObject(String ColomnName); 根据列名取值

 

JDBC连接MySQL并执行query的一个demo

从加载驱动、建立连接 到执行语句 到处理执行结果,最后到关闭连接 释放资源 整个过程。

public class Demo04 {

	public static void main(String[] args) {
		Connection conn = null;
		Statement statement = null;
		ResultSet resultSet = null;
		try {
			//1、注册驱动
			Class.forName("com.mysql.jdbc.Driver");//使用了这个类就加载了

			//2、创建连接
			conn = DriverManager.getConnection("jdbc:mysql://localhost/test1?user=root&password=123456");
		
			//3、得到执行sql语句的Statement对象
			statement = conn.createStatement();
			String sql = "select * from user;";
			
			//4、执行sql语句,并返回结果

			 resultSet = statement.executeQuery(sql);
			//5、处理结果
			while(resultSet.next()){
				System.out.println(resultSet.getObject(1));
				System.out.println(resultSet.getObject(2));
				System.out.println(resultSet.getObject(3));
				System.out.println(resultSet.getObject(4));
				System.out.println(resultSet.getObject(5));
				System.out.println("======================");
			}
		} catch (Exception e) {
			// TODO: handle exception
		}finally {
			//6关闭资源
			if(resultSet != null){
				try {
					resultSet.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
			if(statement != null){
				try {
					statement.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			
			if(conn != null){
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
发布了52 篇原创文章 · 获赞 27 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_37457432/article/details/104182046