在Java中 Connection、Statement、ResultSet 、PreparedSta

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java中 Connection、Statement、ResultSet 、PreparedSta相关的知识,希望对你有一定的参考价值。

在Java中 Connection、Statement、ResultSet 、PreparedStatement各是什么意思?Statement和PreparedStatement的区别是什么?两者各在什么情况下使用?

 Connection是建立与数据库的链接,Statement算是一个连接的实例,用来执行SQL语句,ResultSet是查询后得到的结果集,得到结果后必须执行.next()方法

给你个我刚写的例子,区别很好理解的,我一般都用Statement,这是第一次用PreraredStatement   只不过是在后面赋值而已

public class Test 
 public static void main(String[] args)
  String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
  String dbURL = "jdbc:sqlserver://localhost:1433;  DatabaseName=LIBRARY";
  String userName = "sa";
  String userPwd = "";
  Connection dbConn;
  Statement stmt;
  PreparedStatement ps;
  try 
   Class.forName(driverName);
   dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
   stmt = dbConn.createStatement();
   ResultSet rs1 = stmt.executeQuery("select *from borrow where uno = 2011111276");
   System.out.println("statement:");
   while (rs1.next()) 
    System.out.println(rs1.getString(1)+"  "+ rs1.getString(2));
   
   
   
   
   ps = dbConn.prepareStatement("select *from borrow where uno = ?");
//注意这句
   ps.setString(1, "2011111276");

   ResultSet rs2 = ps.executeQuery();
   System.out.println("preparedstatement:");
   while (rs2.next()) 
    System.out.println(rs2.getString(1)+"  "+ rs2.getString(2));
   
   catch (Exception e) 
   e.printStackTrace();
  
 

参考技术A 接口 Connection
与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。
接口 Statement
用于执行静态 SQL 语句并返回它所生成结果的对象。
接口 ResultSet
表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
接口 PreparedStatement
表示预编译的 SQL 语句的对象。
Statement和PreparedStatement的区别和使用情况给你一个连接吧:http://www.cnblogs.com/raymond19840709/archive/2008/10/13/1309657.html
这篇文章写的还不错!
希望能帮到你。
参考技术B Connection是数据库连接,对数据库的任何操作都需要先建立数据库连接,Statement是在已建立数据库连接conn的情况下向数据库发送执行不带参数的sql语句,是一个对象。ResultSet
是结果集对象,例如ResultSet rs = st.executeQuery(sql),查询的结果集返回并保存在rs结果集中。PreparedStatement是预处理sql执行对象。比如:
perstmt = con.prepareStatement("insert into tb_name (col1,col2,col2,col4) values (?,?,?,?)");
perstmt.setString(1,var1);
perstmt.setString(2,var2);
perstmt.setString(3,var3);
perstmt.setString(4,var4);
perstmt.executeUpdate();
它是先将sqL语句预编译,我们只需要想预编译的sql中传入参数即可。从个方便考虑来说,熟练后我们最好全部使用paredStatement而不用Statement。
参考技术C Connection指数据库连接,只有连接数据库成功后才可以操作数据库
Statement和PreparedStatement:声明语句,封装SQL语句并执行更新或查询功能
ResultSet指查询结果集合,可以循环获取查询结果

Statement和PreparedStatement的区别:Statement指针对一些简单的SQL语句,不带参数,直接执行,而PreparedStatement在封装SQL时可以在SQL语句中配置参数(使用?),然后通过PreparedStatement的setString等方法设置这些参数,然后执行SQL语句。
使用情况主要看你的SQL语句是否带参数了。
参考技术D Connection指数据库连接,只有连接数据库成功后才可以操作数据库
Statement和PreparedStatement:声明语句,封装SQL语句并执行更新或查询功能
ResultSet指查询结果集合,可以循环获取查询结果

Statement和PreparedStatement的区别:Statement指针对一些简单的SQL语句,不带参数,直接执行,而PreparedStatement在封装SQL时可以在SQL语句中配置参数(使用?),然后通过PreparedStatement的setString等方法设置这些参数,然后执行SQL语句。
使用情况主要看你的SQL语句是否带参数了。

JDBC中使用的java中**Connection接口**的**prepareStatement**的实现在哪里?

【中文标题】JDBC中使用的java中**Connection接口**的**prepareStatement**的实现在哪里?【英文标题】:Where is the implementation of **prepareStatement** of **Connection interface** in java used in JDBC? 【发布时间】:2014-09-26 17:33:58 【问题描述】:

Connection interface在java中prepareStatement在JDBC中的实现在哪里?

String sql = "update people set firstname=? , lastname=? where id=?";

PreparedStatement preparedStatement = connection.prepareStatement(sql);

我找不到连接接口的实现,我们直接调用连接接口的方法,但必须有实现连接接口的类。如果没有实现连接接口的类,那么它是如何工作的?

谁能解释一下?

【问题讨论】:

每个数据库都有自己的jdbc驱动,这个驱动有实现 其实Connection接口并不局限于任何特定的数据库厂商,它适用于所有数据库,那么驱动如何提供实现。 在我看来您并不真正了解接口的工作原理...... 【参考方案1】:

...我们直接调用Connection接口的方法,但必须有实现Connection接口的类。

是的,你完全正确。 Connection 接口由 JDBC 提供程序库实现,而不是在 JDK 本身中实现,因为它特定于您正在使用的 RDBMS。所以有一个 MySQL Connection 实现,一个 SQL Server 实现,等等。您通常从 Driver(直接或间接)获得 Connection,您从 DriverManager(直接或间接)获得,您从您的 RDBMS 的 JDBC 驱动程序 jar 加载。

【讨论】:

谢谢!!这取决于 JDBC 提供程序。

以上是关于在Java中 Connection、Statement、ResultSet 、PreparedSta的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记8.1.2 初探JDBC - JDBC编程步骤

Java学习笔记8.1.2 初探JDBC - JDBC编程步骤

MyBatis 框架系列之基础初始

java statement详细用法

在Java中 Connection、Statement、ResultSet 、PreparedSta

如何在 Java 中找出 Connection 对象的设置登录超时?