JDBC中的方法

Connection与特定数据库的连接(会话)在连接的上下文中执行SQL语句并返回结果连接对象的数据库能够提供描述其表、支持的SQL语法、存储过程、此连接的功能等信息。


PreparedStatement表示预编译SQL语句的对象。SQL语句被预编译并存储在PreparedStatement对象中。然后可以使用该对象多次有效地执行该语句。


ResultSet表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。ResultSet对象保持指向其当前数据行的光标。最初,光标位于第一行之前。下一个方法将光标移动到下一行,因为当ResultSet对象中没有更多行时返回false,所以可以在while循环中使用它来迭代结果集。默认的ResultSet对象是不可更新的,并且具有仅向前移动的光标。因此,只能从第一行到最后一行迭代一次。可以生成可滚动和/或可更新的结果集对象。


getConnection尝试建立到给定数据库URL的连接。DriverManager尝试从已注册的JDBC驱动程序集中选择适当的驱动程序。返回值为“到URL的连接”。


prepareStatement创建用于向数据库发送参数化SQL语句的PreparedStatement对象。带或不带in参数的SQL语句都可以预编译并存储在PreparedStatement对象中。然后可以使用该对象多次有效地执行该语句。
注意:此方法是为处理从预编译中获益的参数化SQL语句而优化的。如果驱动程序支持预编译,方法prepareStatement将把语句发送到数据库进行预编译。某些驱动程序可能不支持预编译。在这种情况下,在执行PreparedStatement对象之前,语句可能不会发送到数据库。这对用户没有直接影响。


executeQuery在此PreparedStatement对象中执行SQL查询,并返回查询生成的ResultSet对象
返回值:ResultSet对象,其包含由查询生成的数据;从不为空。


executeUpdate:在此PreparedStatement对象中执行SQL语句,该对象必须是SQL数据操作语言(DML)语句,如insert、update或delete;或不返回任何内容的SQL语句,如DDL语句。

返回值:

(1)SQL数据操作语言(DML)语句的行数。

(2)不返回任何内容的SQL语句的行计数。


next()将光标从当前位置向前移动一行。结果集光标最初位于第一行之前;对该方法的第一次调用接着使第一行成为当前行;第二次调用使第二行成为当前行,以此类推。当对下一个方法的调用返回false时,光标位于最后一行之后。

返回值:如果新的当前行有效,则为true;如果没有更多行,则为false。


close():立即释放此ResultSet对象的数据库和JDBC资源,而不是等待自动关闭时发生。


以连接MySQL为例:

1、注册驱动:告诉Java程序,即将要连接的是哪个品牌的数据库

// 高版本
Class.forName("com.mysql.jdbc.Driver");

// 低版本
Class.forName("com.mysql.cj.jdbc.Driver");

2、获取连接

Connection conn = DrvierManager.getConnection("jdbc.mysql://localhost:3306/要连接的数据库名", "数据库账号", "数据库密码");

3、获取预编译的数据库操作对象

// 查询
String sql = "select name from student;";

// 插入
String sql = "insert into student values ("001", "张三")";

// 修改
String sql = "update student set sname = "李四" where sno = "001"";

// 删除
String sql = "select from student where sno = "001";

4、执行SQL语句

executeQuery()适用于第三步中的SQL语句是select

executeUpdate()适用于第三步中的SQL语句是insert、update或select

rs = ps.executeQuery();

rs = ps.executeUpdate();

5、处理结果集

如果第三步中的SQL语句为select,则存在处理结果集

  • 如果SQL语句查询的是多条,则使用while
  • 如果SQL语句查询的是一条,则使用if

如果第三步中的SQL语句不是select,则不存在处理结果集

while(rs.next()){}

if(rs.next()){}

6、释放资源

先定义的资源后关闭,后定义的资源先关闭。与弹栈和压栈一个原理。

if(rs != null){
    try{
        rs.close();
    } catch(SQLException e) {
        e.printStackTrace();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值