JDBC 1 day 简介及常用接口、类介绍

JDBC 1 day 简介及常用接口、类介绍

JBDC简介

JDBC(java Database Connectivity)从物理结构上说,就是java语言访问数据库的一套API应用程序编程接口。从本质上说,就是调用者(程序员)和实现者(数据库厂商)之间的协议。JDBC的实现由数据库厂商以驱动程序的形式提供。JDBC API使得开发人员可以使用纯java的方式来连接数据库,并进行操作。

 JDBC常用接口、类介绍

JDBC提供对独立于数据库统一的API,用以执行SQL命令。API常用的类、接口如下:

 

1、DriverManager

管理JDBC驱动的服务类,主要通过它获取Connection数据库链接,常用方法如下:

public static synchronized Connection getConnection(String url, String user, String password) throws Exception;

该方法获得url对应的数据库的连接。

 

2、Connection常用数据库操作方法:

Statement createStatement throws SQLException: 该方法返回一个Statement对象。

PreparedStatement prepareStatement(String sql) throws SQLException;该方法返回预编译的Statement对象,

    即将SQL语句提交到数据库进行预编译。

CallableStatement prepareCall(String sql) throws SQLException:该方法返回CallableStatement对象,

    该对象用于存储过程的调用。

上面的三个方法都是返回执行SQL语句的Statement对象,PreparedStatement、CallableStatement的对象是Statement的子类,

只有获得Statement之后才可以执行SQL语句。

 

关于Connection控制事务的方法:

 

Savepoint setSavepoint(): 创建一个保存点

Savepoint setSavepoint(String name):创建一个带有名称的保存点

void setTransactionIsolation(int level):设置事务隔离级别

void rollback():回滚事务

void rollback(Savepoint savepoint):回滚到指定保存点

void setAutoCommit(boolean autoCommit): 关闭自动提交,打开事务

void commit():提交事务

3、Statement

用于执行SQL语句的API接口,该对象可以执行DDL、DCL语句,也可以执行DML语句,

还可以执行SQL查询语句,当执行查询语句是返回结果集,常用方法如下:

ResultSet executeQuery(String sql) throws SQLException:该方法用于执行查询语句,并返回查询结果对应的ResultSet对象,

        该方法只用于查询语句。

int executeUpdate(String sql) throws SQLException:该方法用于执行DML语句,并返回受影响的行数;

        该方法也可以执行DDL,执行DDL返回0;

boolean execute(String sql) throws SQLException:该方法可以执行任何SQL语句,如果执行后第一个结果是ResultSet对象,

        则返回true;如果执行后第一个结果为受影响的行数或没有任何结果,则返回false;

 

4、PreparedStatement

预编译的statement对象,PreparedStatement是Statement的子接口,它允许数据库预编译SQL(通常指带参数SQL)语句,

以后每次只改变SQL命令参数,避免数据库每次都编译SQL语句,这样性能就比较好。而相对于Statement而言,

使用PreparedStatement执行SQL语句时,无需重新传入SQL语句,因为它已经预编译了SQL语句。

但是PreparedStatement需要为编译的SQL语句传入参数值,所以它比了如下方法:

void setXxx(int index, value)根据该方法传入的参数值的类型不同,需要使用不同的方法。

传入的值的类型根据传入的SQL语句参数而定。

 

5、ResultSet

void close() throws SQLException:释放、关闭ResultSet对象

boolean absolute(int row):将结果集移动到第几行,如果row是负数,则移动到倒数第几行。

        如果移动到的记录指针指向一条有效记录,则该方法返回true;

void beforeFisrt(): 将ResultSet的记录指针定位到首行之前,这是ResultSet结果集记录指针的

        初始状态:记录指针的起始位置位于第一行之前。

boolean first():将ResultSet的记录指针定位到首行。如果移动后的记录指针指向一条有效记录,则该方法返回true。

boolean previous():将ResultSet的记录指针定位到上一行,如果移动后的记录指针指向一条有效记录,则该方法返回true。

boolean next():将ResultSet的记录指针定位到下一行。如果移动后的记录指针指向一条有效记录,则返回true。

boolean last():将ResultSet的记录指针定位到最后一行。如果移动后的记录指针指向一条有效记录,则返回true。

void afterLast():将ResultSet的记录指针定位到最后一行之后。

注意:在JDK1.4以前只支持next移动,且每次移动一个位置。到JDK1.5就可以随意定位。

jdbc的编程步骤

进行jdbc编程步骤大致如下:

1、加载数据库驱动

Class.forName(driverClass)

上面的dirverClass就是数据库驱动类所对应的类路径字符串,根据不同数据库厂商提供的驱动也不同。

 

进行jdbc编程步骤大致如下:

1、加载数据库驱动

Class.forName(driverClass)

上面的dirverClass就是数据库驱动类所对应的类路径字符串,根据不同数据库厂商提供的驱动也不同。

 

2、通过DriverManager获取数据库的链接

DriverManager.getConnection(String url, Stirng user, String pass)

当使用DriverManager来获取链接,需要传入三个参数:分别是数据量的url、用户名、密码。

 

3、通过Connection对象创建Statement对象,Connection创建Statement的方法如下三个:

createStatement()创建基本的Statement对象。

prepareStatement(String sql):根据传入的sql语句创建预编译的Statement对象。

prepareCall(String sql):根据传入的sql语句创建CallableStatement对象

 

4、Statement执行SQL语句,Statement有三大方法来执行SQL语句:

execute:可以执行任何SQL语句,单比较麻烦

executeUpdate:可以执行DML、DDL语句。执行DML返回受影响的SQL语句行数,执行DDL返回0;

executeQuery:只能执行查询语句,执行后返回代表查询结果的ResultSet对象。

 

5、操作结果集,针对ResultSet

主要移动指针和获得值

next、previous、first、last、beforeFrist、afterLast、absolute等移动指针的方法。

getXxx获得移动指针指向行,特定列、索引的值。使用列名作为获取值的参数可读性好、使用索引作为获取参数性能好。

 JDBC 1 day 简介及常用接口、类介绍

 

package jdbc;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;




public class TestStatement {
	public static void main(String[] args) {
		//1 加载驱动
			 Connection conn = null;
			 Statement stm = null;
			 ResultSet rs = null;
			try {
				Class.forName("com.mysql.jdbc.Driver");
				//2 获取连接
				 String url = "jdbc:mysql://localhost:3306/mybase?useUnicode=true&characterEncoding=utf-8";
		    	 String user = "root";
		    	 String password = "root123"; 
		    //ctrl + 2
		     conn = DriverManager.getConnection(url, user, password); 
				//3  创建statement的对象
		     stm = conn.createStatement();
				//4  执行sql语句
		     String sql = "select * from test";
		     rs = stm.executeQuery(sql);
		     
		     
		     
		     /*操作数据库 statement.executeUpdate(增删改sql)*/
			 //String sql = "insert into test (ename,job,deptno) values('小d弟','clerk',20)";
			 //String sql = "delete from test where ename='大哥'";  
//		     String sql = "update test set job ='dagege' where ename='小d弟'";
//		     
//		     int lines = stm.executeUpdate(sql);
//			 System.out.println("影响行数"+lines);
			 //5 处理结果集
		     while(rs.next()){
		    	 int empno = rs.getInt(1);
		    	 String ename = rs.getString(2);
		    	 String job = rs.getString(3);
		    	 int mgr = rs.getInt(4);
		    	 Date hiredate = rs.getDate(5);
		    	 double sal = rs.getDouble(6);
		    	 double comm = rs.getDouble(7);
		    	 int deptno = rs.getInt(8);
		    	 System.out.println(empno + " " + ename+" "+job+" "+mgr+" "+hiredate+" "+sal+" "+comm+" "+deptno);
		    	 
		     }		     		   		 
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				//6. 关闭连接
				try {
					rs.close();
					stm.close();
					conn.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
	}
	
}

 

 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114785.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • NTP时间服务器简介

    NTP(NetworkTimeProtocol)网络时间协议,工作在UDP的123端口上。是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(局域网上与标准间差小于1毫秒,互联网上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。NTP服务器NTP服务器提供准确时间,首先要有准确的时间来源,这一时间…

    2022年4月9日
    58
  • 搭建Git本地服务器

    搭建Git本地服务器

    2021年10月12日
    65
  • PyCharm切换Python版本

    PyCharm切换Python版本

    2021年10月28日
    52
  • 网站备案后 换服务器,网站备案后更换服务器怎么办_域名备案一定要服务器吗

    网站备案后 换服务器,网站备案后更换服务器怎么办_域名备案一定要服务器吗网站备案后更换服务器内容精选换一换通过华为云备案,需要先购买华为云中国大陆节点服务器。目前可用于华为云备案的资源有:ECS:弹性云服务器(含云耀云服务器)需包月3个月及以上(包含多次续费后累计时长),且有“包年/包月”计费模式(包月3个月及以上)的弹性公网IP。一台ECS(含云耀云服务器)最多可以备案5个域名。如何将“按需计费”的ECS切换为“包年/包月”计费模式,请参见如果系统提示“您用于备案…

    2025年8月4日
    4
  • 用goaccess对tomcat访问日志进行统计分析

    用goaccess对tomcat访问日志进行统计分析用 goaccess 对 tomcat 访问日志进行统计分析 LC TIME en US UTF 8 bash c goaccess Downloads api access log 2021 06 29 txt log format h u e d t m U H s b date format d b Y time format H M S 0800 参数说明 LC TIME 适应日期中月份为英文缩写的情况命令

    2025年9月5日
    4
  • 大数据建模培训Python

    大数据建模培训Python我国的知名人士:“马云”以前在2015年提及互联网技术将要由IT转至DT,什么叫DT,说白了DT便是数据信息加技术性。现如今是个实实在在的互联网时代,互联网大数据围绕了大家的吃穿住行,能够这么说,互联网大数据是现阶段最珍贵的数据信息藏宝。什么叫Python网络爬虫?Python网络爬虫又叫爬虫技术,有关Python网络爬虫,大家必须了解的有:1、Python基本英语的语法2、HTML网页页面的內容抓取(数据收集)3、HTML网页页面的数据信息获取(数据预处理)4、Scrapy架构

    2022年5月31日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号