学习JDBC

JDBC

是⼀种用于执行SQL语句的Java API,可以为多种数据库提供统⼀访问,由⼀组Java语⾔编写的类和接口组成。

JDBC的作用:JDBC是用于执行SQL语句的Java API(Java语言通过JDBC可以操作数据库)

JDBC 可以干三件事:

1.与数据库建立连接

2.将Java中拼写的SQL语句发送到数据库中执行

3.处理执行结果

JDBC在运行时执行的顺序如下。

(1). 由 DriverManager 类驱动数据库。

(2). 由 Connection 接口负责将Java程序和数据库建立连接。

(3). 由 Statement/PreparedStatement 接口将SQL语句发送到数据库中。

(4). 由 ResultSet 接口处理数据库返回的结果集。

DriverManager

java.sql.DriverManager 用于管理一组 JDBC 驱动程序的基本服务。可以通过该管理类来建立并获取和指定数据库之间的连接。

方法:

public static Connection getConnection(String url, String user, String password) :使⽤账号 user和密码 password ,建立到指定数据库 URL 的连接,连接成功后返回新的数据库连接

public static Connection getConnection(String url) :尝试查找了解给定URL的驱动程序(将数据库用户信息包含在 url 中)

public static void registerDriver(java.sql.Driver driver) :向 DriverManager 注册给定驱动程序

数据库连接字符串格式:

主协议:子协议://数据库服务器:端口号/数据库名称[?连接参数]

Connection接口

作用:让java程序与数据库之间建立连接,只有在数据库建立连接后,才能将sql语句发送到数据库中执行。

继承AutoCloseable接口

方法:

//创建一个Statement对象来将sql语句发送到数据库

Statement createStatement()

//创建一个PreparedStatement对象来将参数化的sql语句发送到数据库

PreparedStatement prepareStatement(String sql)

//创建一个PreparedStatement对象,该对象能获取自动生成的键

PreparedStatement prepareStatement(String sql,int autoGeneratedKeys)

//立即释放此Connection对象的数据库和JDBC资源,而不是等待它们被自动释放

void close()

//获取一个数据库连接对象(Connection)

getConnection()

//创建一个Statement对象

createStatement()

Statement接口

作用:将sql语句发送到数据库中,并告知数据库执行sql语句,获取数据库执行结果。

继承AutoCloseable接口

//执行给定的sql语句,该语句可能返回多个语句

boolean execute(String sql)

//执行给定的sql语句,该语句可能返回多个语句,并通知驱动程序所有自动生成的键都应该可用于获取

boolean execute(String sql,int autoGeneratedKey)

//执行给定的sql语句,该语句可能为insert,update或delete语句,或者不返回任何内容的sql语句(如SQL DDL语句)

int executeUpdate(String sql)

//执行给定的sql语句,并通过给定标志通知驱动程序由此Statement生成的自动生成键是否可用于获取

int executeUpdate(String sql,int autoGeneratedKey)

//执行给定的sql语句,该语句返回单个ResultSet对象

ResultSet executeQuery(String sql)

//获取是否关闭了此Statement对象

boolean isClosed()

//立即释放此Statement对象的数据库和JDBC资源,而不是等待该对象自动关闭时发生此操作

PreparedStatement接口

是Statement接口的子接口,表示预编译的sql语句的对象,用与执行预编译的sql语句并获取返回结果,sql语句被预编译并存储在PreparedStatement对象中。然后可以使用该对象多次高效地执行预编译sql语句。

PreparedStatement具有预编译,高效性的优点。

注:PreparedStatement可以更好的保护应用程序免受sql注入攻击,并且可以提高查询性能,因为预编译的语句可以在多次执行时重复使用

//在此PreparedStatement对象中执行sql语句,该语句可以是任何类的sql语句

boolean execute()

//使用给定对象设置指定参数的值。

void setBoject(int parameterIndex,Object x)

//在此PreparedStatement对象中执行sql语句,该语句必须是一个sql数据操作语言语句,比如insert,update,delete,或者返回无内容的sql语句,比如DDL语句

int executeUpdate()

//在此PreparedStatement对象中执行sql语句,并返回该查询生成的ResultSet对象

ResultSet executeQuery()

ResultSet接口

用于表示查询返回的结果集,通常通过执行数据库的查询语句生成。

ResultSet对象具有指向其当前数据行的指针。

方法:

//将指针从当前位置向下或向后移一行

boolean next()

//获取ResultSet对象当前行指定列的值,并以java编程语言中的Object类型返回。

Object getObject(int columnIndex)

//获取ResultSet对象当前行指定名称的值,并以java编程语言中的Object类型返回。

Object getObject(String columnLable)

//获取此ResultSet对象是否已关闭

boolean isClosed()

//立即释放此ResultSet对象的数据库和JDBC资源,而不是等待该对象自动关闭时发生此操作

void close()

注:在处理ResultSet对象时,需要确保在使用完ResultSet对象后及时关闭它,以释放资源。使用getInt()和getString()等方法获取每一行中的数据

ResultSetMetaData接口:

可用于获取关于ResultSet对象中列的类型和属性信息的对象,列的类型和属性信息被称为表的元数据。

//获取数据库名

String getCatalogName(int column)

//返回此ResultSet对象中的列数

int getColumnCount()

//若查询时起别名,结果返回别名

String getColumnLable()

//返回结果是原始的名字

String getColumnName()

//返回指定列的sql数据类型,sql默认的数字对应的数据类型

int getColumnTypeName(int cloumn)

//返回表名

String getTableName(int column)

//如果使用ResultSet.getObject方法从列中获取值,则返回构造该值的java类的完全限定名

String getColumnClassName(int column)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值