Java之JDBC概述

Java之JDBC概述

开发工具与关键技术:MyEclipse 10,java
作者:刘东标
撰写时间:2019-06-05
什么是JDBC
1、 JDBC(Java Data Base Connectivity,Java数据库连接)
2、 是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问
3、它由一组用Java语言编写的类和接口组成
JDBC访问数据库步骤
1:加载一个Driver驱动
2:创建数据库连接(Connection)
3 :创建SQL命令发送器Statement
4:通过Statement发送SQL命令并得到结果
5:处理结果(select语句)
6:关闭数据库资源 • ResultSet • Statement • Connection。

JDBC语法总结
1.加载驱动
加载JDBC驱动是通过调用方法java.lang.Class.forName(),下面列出常用的几种数据库驱动程序 加载语句的形式 :
Class.forName(“oracle.JDBC.driver.OracleDriver”);//使用Oracle的JDBC驱动程序
Class.forName(“com.microsoft.JDBC.sqlserver.SQLServerDriver”);//使用SQL Server的JDBC驱 动程序
Class.forName(“com.ibm.db2.JDBC.app.DB2Driver”);//使用DB2的JDBC驱动程序
Class.forName(“com.mysql.JDBC.Driver”);//使用MySql的JDBC驱动程序
2.创建数据库连接
与数据库建立连接的方法是调用DriverManager.getConnection(String url, String user, String password )方法
Eg:是根据MySQL数据做的案例
Connection con=null;
String url=“jdbc:mysql://localhost:3306/diyou”;
String user=“root”;
String password=“root”;
conn = DriverManager.getConnection(url, user, password);
3.创建Statement并发送命令
Statement对象用于将 SQL 语句发送到数据库中,或者理解为执行sql语句
有三种 Statement对象:
Statement:用于执行不带参数的简单SQL语句;
PreparedStatement(从 Statement 继承):用于执行带或不带参数的预编译SQL语句;
CallableStatement(从PreparedStatement 继承):用于执行数据库存储过程的调用。
在这里插入图片描述

注意:1、Statement缺陷:存在SQL注入风险,由createStatement创建,用于发送简单的SQL语句。(不带参数的);
2、PreparedStatement 接口继承 Statement接口 • 如果需要多次执行一个SQL语句,可以使用PreparedStatement对象。在创建 PreparedStatement对象时,通过传递不同参数值多次执行PreparedStatement对象,可 以得到多个不同的结果。
优势:执行效率高、代码可读性强、安全性高
4.处理ResultSet结果
ResultSet对象是executeQuery()方法的返回值,它被称为结果集,它代表符合SQL语句条件的 所有行,并且它通过一套getXXX方法(这些get方法可以访问当前行中的不同列)提供了对这 些行中数据的访问。
ResultSet里的数据一行一行排列,每行有多个字段,且有一个记录指针,指针所指的数据行 叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用 ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环。
ResultSet对象自动维护指向当前数据行的游标。每调用一次next()方法,游标向下移动一行。
初始状态下记录指针指向第一条记录的前面,通过next()方法指向第一条记录。循环完毕后 指向最后一条记录的后面。
在这里插入图片描述
5.关闭数据库资源
作为一种好的编程风格,应在不需要Statement对象和Connection对象时显式地关闭它们。关 闭Statement对象和Connection对象的语法形式为:
public void close() throws SQLException
用户不必关闭ResultSet。当它的 Statement 关闭、重新执行或用于从多结果序列中获取下一 个结果时,该ResultSet将被自动关闭。
注意:要按先ResultSet结果集,后Statement,最后Connection的顺序关闭资源,因为 Statement和ResultSet是需要连接是才可以使用的,所以在使用结束之后有可能其他的 Statement还需要连接,所以不能先关闭Connection。

package com.gx.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCDemo {
public static void main(String[] args) {

	   Connection conn=null;
	   PreparedStatement ps=null;
	   ResultSet rs=null;
	//1、加载驱动
	   try {
		Class.forName("com.mysql.jdbc.Driver");
	//2、通过DriverManager获取数据库的连接Connection
	 String url ="jdbc:mysql://localhost:3306/demo";
	 String user ="root";
	 String password ="root";
	 conn =DriverManager.getConnection(url, user, password);
	 //3、从数据库连接Connecton 创建Statement或者*PreparedStatement
	 //Statement s=conn.createStatement();
	 ps=conn.prepareStatement("SELECT * from pw_user");
	 //4、使用PreparedStatement或者Statement执行sql并返回结果集
	 /* DDL(数据定义语言) 主要用来操作数据的结构,CREATE、ALTER、DROP表
      DML(数据操作语言) 主要用来操作数据,insert、update、delete、select
     DCL(数据控制语言) 主要用来操作数据库的权限
     execute();可以执行任何SQL语句,但比较麻烦
     executeUpate();主要用于执行增删改操作,返回受SQL语句影响的行数,执行DDL返回0.
     executeQuery();只能执行查询语句,执行后返回代表查询结果的ResultSet对象*/
	 rs=ps.executeQuery();
	 //5、从ResultSet获取数据
	 while(rs.next()){
		 System.out.println(rs.getInt(1)+"\t"+rs.getString(2));
	 }
		//Connection.class
	} catch (ClassNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}finally{//关闭资源
		   try {
			 if(conn!=null)
				 conn.close();
			 if(ps!=null)
				 ps.close();
			 if(rs!=null)
				 rs.close();
		} catch (Exception e2) {
			// TODO: handle exception
		}
	   }
}

}

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值