JAVA_JDBC操作数据库(一)

一:JDBC概述

1:jdbc简介

jdbc—Java Database Connectivity即Java数据库连接,它由一组使用Java语言编写的类与接口组成。JDBC提供了执行sql语句标准的JavaAPI,可以方便地实现多种关系数据库的统一操作。
JAVA_JDBC操作数据库(一)_第1张图片
第一层为Java应用程序,它使用JDBC API连接和操作数据库,而使用JDBC API连接不同的数据库时,需使用不同的JDBC驱动程序。
1)JDBC API:提供了Java应用程序与各种不同数据库交互的标准接口,包括Connection、Statement、PreparedStatement、ResultSet。开发人员使用JDBC接口进行各种数据库的操作。
2)JDBC Driver Manager:能够管理各种不同JDBC驱动。
3)JDBC驱动:JDBC驱动由不同的数据库厂商提供,用于连接不同的数据库。例如Oracle公司提供专用于连接Oracle的JDBC驱动,微软提供专门连接SqlServer的JDBC驱动。JDBC驱动又实现了JDBC API的各种接口,加载JDBC驱动后才可以使用JDBC API中的接口操作数据库。
2.JDBC API
JDBC的核心是提供Java API类库,帮助用户建立与数据库的连接。执行Sql语句、检索结果集等。Java开发人员可以利用这些类库开发数据库应用程序。
JDBC API中主要类和接口
类及接口 功能描述
java.sql.DriverManager 管理JDBC驱动程序
java.sql.connection 建立特定数据库的连接(会话),建立连接后执行sql语句
java.sql.statement 用于执行sql语句
java.sql.PreparedStatement 创建可以编辑的sql语句对象,是Statement的子接口
java.sql.ResultSet 创建检索sql语句的结果集
java.sqlCallableStatement 执行sql存储过程
java.sql,types 表示sql类型的常量
java.sql.sqlException 数据库访问过程中产生的错误描述信息

注:使用JDBC操作数据库需熟练掌握JDBC API,JDBC API主要包括建立数据库的连接、发送SQL语句、处理结果三个方面,也就是操作数据库的步骤。而对于数据库进行增、删、改、查前提都是建立在数据库的连接上。
3.JDBC驱动分类
JDBC本身提供了一套数据库操作标准,并针对每个数据库厂商提供专有的驱动程序接口。
1)JDBC-ODBC桥驱动: 2)纯Java驱动: 3)JDBC网络驱动: 4)本地协议纯JDBC驱动:
JDBC驱动4种分类详解

二:JDBC连接数据库

1)JDBC操作步骤

(1)加载并注册驱动程序
使用class.forName()方法将指定的类加载到Java虚拟机中,若指定类不存在时则产生异常。(前提要手动把驱动包加入到项目中)
class.forName("JDBC驱动名称");
(2)与数据库建立连接
DriverManager类跟踪已注册的驱动程序,调用getConnection()方法时将查找整个驱动程序列表,加载数据连接字符串指定的数据库驱动程序,并建立与数据库的连接。该方法提供三个参数分别表示url、用户名和密码。
Connection con=DriverManager.getConnection("数据连接字符串","用户名","密码");
(3)创建操作对象,发送sql语句
使用Connection创建Statement操作对象,并将sql语句传送给所需要连接的数据库,若sql语句为查询,则返回类型为Resultset对象
Statement sta=con.createStatement();
ResultSet rst=sta.executeQuery("select * from tab_");
(4)处理结果
使用ResultSet对象的next()方法将结果集光标只想下一行。ResultSet光标默认位于结果集第一行之前,因此首次调用next()方法时光标将被定为在结果集的第一行。光标位于结果集的最后一行也就是末尾时,ResultSet的next()方法将返回false。getxxx()方法可以获取当前行的某列数据。
while(rst.next()){
   int id=rst.getInt("id");
   String name=rst.getString("name");
}
(5)关闭连接
con.close();

2)JDBC连接数据库步骤

1)配置数据库驱动程序
实际应用中一般采用纯Java驱动的方式连接数据库,首先需要导入你需要用到的驱动包。
2)加载驱动程序
比如你导入了sqlserver的驱动包那么你的驱动程序路径就应该如下:
com.microsoft.sqlserver.jdbc.SQLServerDriver
若加载后的驱动程序出现java.lang.classnotfoundexception异常,说明此驱动程序的路径位置不正确。
3)连接及关闭数据库
数据库驱动程序正确加载后,接下来要做的就是使用DriverManager类连接数据库。
DriverManager类常用的方法
public static Conncetion getConnection(String urk,String user,String ppassword)throws SQLexecption 根据提供的数据库地址、用户名、密码建立与数据库的连接
加载完成驱动后就需要提供数据库的具体连接地址,不同的数据库有不同的连接地址。
连接地址格式:
jdbc:sqlserver://ip地址:端口号;Databasename=“数据库名称”;
若果是连接本地:ip可改为localhost:端口号;
Connection接口的常用方法
返回类型 方法名称 描述
Statement createStatement() 创建Statement对象
PreparedStatement prepareStatement(String sql) 创建preparedStatement对象
CallableStatement prepareCall(String sql) 执行存储过程
vid setAutoCommit(boolean flag) 设置数据库是否自动提交
void rollback() 回滚数据库操作
void commit() 提交事务
void close() 关闭数据库连接
boolean isClosed() 判断连接是否已关闭

三:Statement接口

数据库连接后可以使用Statement接口进行具体操作,该接口引用指向Connection接口提供的createStatement()方法获得。

createStatement()的常用方法
返回类型 方法名称 描述
int executeUpdate(String sql) 执行数据库更新sql语句:insert、update、delte。并返回更新的记录数
ResultSet executeQuery(String sql) 执行数据库查询操作,返回结果集对象
boolean execute(String sql) 执行sql语句,返回执行结果true、false
void close() 关闭statement操作
package com.Connection;

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


public class Test {
	private static final String DRIVER="com.mysql.jdbc.Driver";
	private static final String URL="jdbc:mysql://localhost/mytest";
	public static void main(String[] args) {
		Connection con=null;
		Statement sta=null;
		try {
			Class.forName(DRIVER);
			con=DriverManager.getConnection(URL, "root", "123456");
			sta=con.createStatement();
			sta.execute("insert into test values('4','tom')");
			sta.close();
			String tname="mack";
			sta=con.createStatement();
			String sql="update test set tname='"+tname+"'where tid="+2; 
			sta.execute(sql);
			sta.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

注意:操作中分别先关闭了statement和Connection。一般连接关闭后其他所有操作均将被关闭,但实际开发中,建议先关闭所有对象且采用先打开后关闭的方式。所以先关闭statement,之后再关闭Connction。

四:ResultSet接口

1)resultSet简介:数据库的更新操作insert、update、delete均可以直接使用statement接口中的executeUpdate()方法完成。而数据库的查询操作,则使用statement接口中的executeQuery()方法,该方法返回类型为ResuletSet。JDBC中数据库的所有查询记录使用ResultSet接收并显示内容。
ResultSet常用方法
返回类型 方法名称 描述
boolean next() 将指针指到下一行
int getInt(int columnIdex) 以整数形式按列的编号取得指定列的内容
int getInt(String columnname) 以整数形式取得指定列的内容
string getString(int columnIndex) 以字符串形式按列的编号取得指定列的内容
string getString(String columnName) 以字符串形式取得指定列的内容
2)ResulSet应用
package com.Connection;

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


public class Test {
	private static final String DRIVER="com.mysql.jdbc.Driver";
	private static final String URL="jdbc:mysql://localhost/mytest";
	public static void main(String[] args) {
		Connection con=null;
		Statement sta=null;
		ResultSet rst=null;
		try {
			Class.forName(DRIVER);
			con=DriverManager.getConnection(URL, "root", "123456");
			sta=con.createStatement();
			rst=sta.executeQuery("select * from test");
			while(rst.next()){
				System.out.println(rst.getInt(1));//获取的tid是int类型。1表示第一列
				System.out.println(rst.getString(2));//获取的tname是String类型。2表示第二列的数据类型
				
				//可以将以上的获取方式该为通过列名获取
				System.out.println(rst.getString("tid"));//通过列名获取数据
				System.out.println(rst.getString("tname"));//通过列名获取数据
			}
			rst.close();
			sta.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}


五:PreparedStatemnt接口

1)PreparedStatement简介:
PreparedStatement接口继承自Statement接口,其使用更为灵活高效。该接口实例包含已编译的、具有输入参数的sql语句。Sql语句中输入参数的值,创建时未被指定,而是保留?作为占位符。
try {
			Class.forName(DRIVER);
			con=DriverManager.getConnection(URL, "root", "123456");
			String sql="insert into test values(?,?)";
			pst=con.prepareStatement(sql);
			pst.setInt(1, 5);
			pst.setString(2, "xxx");
			pst.execute();
			pst.close();
			con.close();
			System.out.println("添加成功!");
			
		} catch (Exception e) {
			// TODO: handle exception
		}
PreparedStatement和Statement都可以对数据库进行操作。但PreparedStatement语句可以进行预编译,再次执行相同的sql语句时数据库端不在进行编译,故其性能较高,在开发中建议使用PreparedStatement。

你可能感兴趣的:(JAVA)