JDBC-操作对象解释

11 篇文章 0 订阅

Driver

Driver(com.mysql.jdbc.Driver):这个就是mysql数据库对Java提出的JDBC的实现,在使用Java操作mysql数据库时,第一步就需要先加载该对象,有了驱动支持,才能做后续操作。

现在我们加载驱动一般都是使用Class.forName("com.mysql.jdbc.Driver");,以往都是采用DriverManager.registerDriver(new Driver());来注册驱动,但是现在这样操作基本算是多此一举了,我们先看看Driver的源码:
在这里插入图片描述
我们发现当该类加载的时候,就会自动注册,所以我们不需要多余的手动注册了,我们只需要将该类加载即可,当然这并不意味着不能用注册的方式哦,博主只是更推荐使用Class.forName("com.mysql.jdbc.Driver")这种方式。

DriverManager

DriverManager是用于管理一组JDBC驱动程序的基本服务对象,我们常使用它的一个静态方法——public static Connection getConnection(String url, String user, String password) throws SQLException,这个方法用于获取一个数据库连接对象,使用它需要处理SQLException异常,它的参数分别是数据库的url,user,password,下面博主具体解释三个参数:

参数解释
url连接数据库的唯一定位符,就是需要连接哪里的数据库,“jdbc:mysql://localhost:3306/test”,“jdbc:mysql”就是协议,代表实现了jdbc的mysql协议。“localhost:3306”就是主机地址和端口号(mysql默认端口3306,oracle默认端口1521),代表到哪里的什么地方去连接数据库。“test”就是我们要连接的数据库名字,代表我们操作的哪个数据库。这个url后面可以自己拼接参数(?参数名=值&参数名=值&…)
user用户名,连接数据库的合法用户
password密码,用户连接数据库的密码

Connection

Connection:数据库连接对象,它就代表了数据库,它有好几个常用的方法,列举如下:

方法作用
Statement createStatement() throws SQLException创建一个sql语句的执行对象
PreparedStatement prepareStatement(String sql) throws SQLException;创建一个预处理sql语句的执行对象,该方法需要传入sql语句
void setAutoCommit(boolean autoCommit) throws SQLException;设置数据库是否自动提交,传入false表示关闭自动提交,传入true表示开启自动提交
void commit() throws SQLException;提交事务,在手动提交的前提下,事务成功结束后手动提交的时候使用
void rollback() throws SQLException;回滚事务,在手动提交的前提下,事务失败后回滚事务使用
void close() throws SQLException;关闭数据库连接对象,一般在该对象使用结束后调用,用以释放连接资源

当然Connection还有很多方法,博主这里只列出博主自认为较为常用的方法。

Statement

Statement就是执行sql语句的对象,它的主要作用就是执行sql语句,其常用方法如下:

方法作用
ResultSet executeQuery(String sql) throws SQLException;执行查询的sql语句常用该方法,返回对应查询的结果集对象
int executeUpdate(String sql) throws SQLException;执行增加、删除、更新的sql语句常用该方法,返回对应表中受影响的行数
void close() throws SQLException;关闭执行sql语句的对象,一般在结束时使用,用以释放资源

Statement对象执行的sql语句是采用字符串拼接的sql语句,这样就会存在安全问题,会有sql注入的风险,所谓sql注入,就是在用户应该传入参数的字符串里面出现了sql语句,程序就会误解原有sql语句的意思,执行预料之外的sql。

比如:用户登录的sql语句为
select * from user where id = '传入用户名' and password = '传入密码';
当用户输入的用户名为1' or '1' ='1,密码输入1' or '1' ='1
然后我们的程序得到的sql语句为:
select * from user where id = '1' or '1' = '1' and password = '1' or '1' = '1';
它就完全让where条件失效了,所以不安全,由此提出了PreparedStatement预处理的执行对象(PreparedStatement对象在本文末)。

ResultSet

ResultSet为结果集对象,它用于封装执行查询后的数据,我们得到查询出的数据,就是遍历它,下面展示其常用方法:

方法作用
boolean next() throws SQLException;指向数据的下一行,下一行存在数据返回true,不存在数据返回false
void close() throws SQLException;关闭结果集对象,一般在使用该对象结束后,用于释放资源
xxx getXxx(int columnIndex) throws SQLException;用于获取到当前行第columnIndex列的xxx类型的数据(这里的xxx包括boolean,byte,short,int,long,float,double,BigDecimal,String,Byte[],java.sql.Date,java.sql.Time,java.sql.Timestamp,Object…)
xxx getXxx(String columnLabel) throws SQLException;用于获取到当前行中列名为columnLabel的xxx类型的数据

我们在获取某行中某列的数据时,根据其本身的数据类型获取即可,尽量避免获取类型与本身类型不一致的情况,否则可能会出现预料之外的情况,而且博主建议在获取数据时,尽量使用列名来获取,更直观,而且更方便后期维护。

PreparedStatement

PreparedStatement可以算是Statement的“升级版”吧,它继承了Statement,它是预处理sql的执行对象。它就能避免sql注入的问题,因为它在通过连接对象得到的时候就先传入特殊处理后的sql语句,需要传递参数的位置使用?占位符代替,然后再对sql语句中指定的占位符赋值,最后才执行该对象。该对象的常用方法也列举如下:

方法作用
void setXxx(int parameterIndex, xxx x) throws SQLException;为第parameterIndex个?占位符赋xxx类型的x值(这里的xxx包括boolean,byte,short,int,long,float,double,BigDecimal,String,Byte[],java.sql.Date,java.sql.Time,java.sql.Timestamp,Object…),给对应的数据列设置对应的数据类型即可
ResultSet executeQuery() throws SQLException;执行查询操作,返回结果集对象
int executeUpdate() throws SQLException;执行增加、删除、更新操作,返回对应表中受影响行数

该对象使用完毕后也需要关闭资源,它只需要调用其父类的close方法即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sqlite-jdbc-3.36是一个用于Java编程语言的JDBC驱动程序,用于连接和操作SQLite数据库。SQLite是一种轻量级的嵌入式数据库引擎,没有独立的服务器进程,它将整个数据库作为一个文件存储在主机文件系统中。 sqlite-jdbc-3.36提供了用于连接SQLite数据库的API和工具,使得开发者可以使用Java语言轻松地在应用程序中操作SQLite数据库。它提供了各种功能,如连接数据库、创建和执行SQL语句、事务管理、批处理操作等。 使用sqlite-jdbc-3.36,可以通过以下步骤在Java应用程序中连接和操作SQLite数据库: 1. 下载并导入sqlite-jdbc-3.36的JAR文件到项目中。 2. 加载驱动程序类,这样可以将其注册到JavaJDBC驱动管理器中。 3. 使用JDBC连接字符串指定要连接的SQLite数据库文件路径,并使用驱动程序的getConnection()方法获得一个连接对象。 4. 通过连接对象创建一个语句对象,并使用该对象执行SQL查询或更新语句。 5. 处理和检索结果,可以使用语句对象的executeQuery()方法执行查询SQL语句,并使用结果集对象获取查询结果。 6. 关闭连接和释放资源,最后要确保关闭连接对象和释放相关资源,以防止资源泄漏。 sqlite-jdbc-3.36具有良好的性能和稳定性,可以轻松地与Java应用程序集成,并提供了强大的SQLite数据库操作功能。无论是开发桌面应用程序、移动应用程序还是服务器端应用程序,sqlite-jdbc-3.36都是一个很好的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值