jdbc语句(jdbc statement)和编制报表(preparedstatement)的区别

在我们开始讨论区别之前,让我们先了解一下JDBC是什么。...

在我们开始讨论区别之前,让我们先了解一下JDBC是什么。

JDBC(javadatabaseconnectivity)是一个javaapi,用于连接和执行与数据库的查询。它是独立于数据库的连接的行业标准,提供了通用的数据访问,尤其是存储在关系数据库中的数据。它使用用Java编程语言编写的JDBC驱动程序将任何Java应用程序与数据库连接起来。它允许我们连接到所有公司数据库,即使在异构环境中也是如此。

Statement和PreparedStatement是表示与数据库服务器交互的SQL语句的类。让我们详细讨论一下,解释一下两者的区别。

jdbc语句(jdbc statement)和编制报表(preparedstatement)的区别

什么是陈述(statement)?

语句是一个JDBC接口,用于对SQL数据库的通用访问,特别是在运行时使用静态SQL语句时。

它定义了使用SQL或PL/SQL命令与数据库交互的方法和属性。它用于执行标准SQL语句,如CREATE、UPDATE、retreve和DELET(CRUD)。它是Java程序和数据库之间的载体,但在运行时不能接受参数,而且它不是预编译的,这意味着同一个SQL语句不能多次使用,这导致性能比PreparedStatement慢。它更倾向于SQL注入。

 

jdbc语句(jdbc statement)和编制报表(preparedstatement)的区别

什么是编制报表(preparedstatement)?

它是一个扩展和强大的语句接口版本,可以参数化,也可以不参数化。与语句不同,它可以接受输入参数,从而提高性能。

它还有助于用setter方法编写面向对象的代码,从而提高应用程序的性能。最好的部分是,它是通过非SQL二进制通信协议执行的,基本上是一种非基于文本的格式,用于客户端和服务器之间的通信,这最终减少了带宽使用,从而提高了对服务器的通信调用速度。

简单来说,它是一个表示预编译SQL语句的对象。

jdbc语句和preparedstatement的区别

基本的

JDBC Statement和PreparedStatement是表示SQL语句的类,用于发送SQL或PL/SQL命令并从数据库接收数据。语句接口提供了执行查询和数据库更改的方法和属性。它是一个用于访问数据库的通用接口,但不能接受输入和输出参数。另一方面,PreparedStatement接口扩展了Statement接口,用于在JDBC中执行预编译的SQL语句,以便可以多次使用相同的SQL语句。

预编译语句

与JDBC语句不同,PreparedStatement是一个预编译语句,这意味着当它执行时,DBMS可以运行SQL语句,而不需要先编译它。简单地说,语句可以多次运行,而不必每次编译它。它所做的只是扩展语句接口并添加使用绑定变量的能力。这允许更快的执行,特别是当它与批一起使用时。另一方面,语句没有预编译,这使得它比PreparedStatement更不可靠。

输入参数

语句接口不能在运行时将参数传递给SQL查询,因为它只能用于执行静态SQL语句,并且不能接受输入参数。输入参数是SQL语句中的占位符,用于在存储过程和函数之间交换数据。相反,PreparedStatement接口可以在运行时将参数传递给SQL查询,它可以有一个或多个IN参数,最终允许我们执行动态查询。

二进制通信协议

PreparedStatement是通过非SQL二进制通信协议执行的,这意味着客户端和服务器之间使用非基于文本的格式进行通信,而不是使用效率较低的文本协议。在二进制协议中,数据以二进制形式发送,这种形式的解析速度要快得多,是将客户机连接到服务器的最快和最有效的方法。这将减少带宽使用,加快对服务器的通信调用,最终通过重复的select查询加快速度。在语句接口中没有实现这样的协议。

sql注入

它指的是可能破坏数据库的注入攻击。将恶意代码注入SQL语句以操纵数据库向攻击者泄露内容是最常见的技术之一。恶意代码被注入到应用程序中,然后被传递到SQL数据库以访问各种资源或对数据进行更改。PreparedStatement对SQL注入具有弹性,因为它使用参数化查询自动转义引号等特殊字符。语句不能转义SQL注入,因为我们在JDBC中使用连接的SQL字符串。

报表与准备报表:比较图

jdbc语句(jdbc statement)和编制报表(preparedstatement)的区别

总结 - jdbc语句的构造(of jdbc statement) vs. 编制报表(preparedstatement)

JDBC语句和PreparedStatement接口定义了从SQL数据库发送和接收数据的方法和属性。虽然一条basic语句足以执行简单的SQL语句,但很难克服使用PreparedStatement所带来的灵活性和好处。语句接口是用于执行静态SQL语句的通用载体,而PreparedStatement是用于执行动态SQL语句的参数化语句。两者之间的主要区别在于PreparedStatement是一个预编译语句,这意味着同一个SQL命令可以多次使用,从而获得更好的性能和更快的结果。

  • 发表于 2021-06-25 10:39
  • 阅读 ( 259 )
  • 分类:IT

你可能感兴趣的文章

资产负债表(balance sheet)和财务状况表(statement of financial position)的区别

...是公司在该日的财务状况的快照。 什么是财务状况表(a statement of financial position)? 财务状况表也在年底编制,提供公司资产和负债以及财务状况和流动性的概述。财务状况表通常由非营利组织编制。非营利组织编制的财务状况...

  • 发布于 2020-10-09 23:02
  • 阅读 ( 999 )

财务报告(financial reporting)和财务报表(financial statements)的区别

...不动产、厂房和设备的会计处理 什么是财务报表(financial statements)? 财务报表按会计期间编制,一般为一年。该会计期间被称为“会计年度”,与日历年不同,因为会计期间可能因公司需要或行业惯例而有所不同。例如,许多零...

  • 发布于 2020-10-13 16:29
  • 阅读 ( 871 )

现金流(cash flow)和资金流量表(fund flow statement)的区别

...现金流与资金流量表5。摘要 什么是现金流量表(a cash flow statement)? 现金流量表是记录一个财政年度现金流入和流出的报表。现金是公司日常经营活动中最重要的资产之一,也是流动性最强的资产。流动性对企业的生存和长期盈...

  • 发布于 2020-10-21 10:04
  • 阅读 ( 387 )

比较的(comparative)和通用尺寸报表(common size statement)的区别

比较的(comparative)和通用尺寸报表(common size statement)的区别 财务报表对许多利益相关者有着广泛的用途,特别是对股东来说,因为这些报表提供了许多重要的信息。比较财务报表和普通财务报表是公司用来提取财务信息的两种...

  • 发布于 2020-10-25 21:55
  • 阅读 ( 632 )

合并(combined)和合并财务报表(consolidated financial statements)的区别

合并(combined)和合并财务报表(c***olidated financial statements)的区别 随着企业实施扩张战略,它们可能会收购其他公司的控股或非控股股权。这样做是为了获得新的机会,获得协同效应,进入其他受限制的市场。(有些国家不允许...

  • 发布于 2020-10-26 22:07
  • 阅读 ( 634 )

资产负债表(balance sheet)和现金流量表(cash flow statement)的区别

资产负债表(balance sheet)和现金流量表(cash flow statement)的区别 衡量和记录公司绩效对于评估结果和为未来做出决策非常重要。这些信息通过年终财务报表报告给相关利益相关者。资产负债表和其他两大利益相关者越来越依赖现...

  • 发布于 2020-11-04 12:28
  • 阅读 ( 653 )

如何用java连接mysql数据库

... String queryString = "select version()";Statement stmt = con.createStatement();ResultSet rset = stmt.executeQuery(queryString); ...

  • 发布于 2021-03-11 17:39
  • 阅读 ( 330 )

odbc oledb(odbc oledb)和jdbc公司(jdbc)的区别

...数据库。•创建连接以与数据库对象通信•执行所需的SQL语句•返回结果集 odbc oledb(odbc oledb)和jdbc公司(jdbc)的区别 定义 ODBC是用于访问数据库管理系统(DBMS)的标准应用程序编程接口(API)。另一方面,OLEDB是一个API,它允许以...

  • 发布于 2021-07-01 12:14
  • 阅读 ( 335 )

财务报表(statement of affairs)和资产负债表(balance sheet)的区别

...在这里以表格的形式显示出来。 内容:事务说明(content: statement of affairs) vs. 资产负债表(balance sheet) 对比图 定义 关键区别 相似之处 结论 对比图 Basis for ComparisonStatement of AffairsBalance Sheet 意义资产负债表是根据单一记账...

  • 发布于 2021-07-09 07:35
  • 阅读 ( 283 )

爪哇7(java 7)和爪哇8(java 8)的区别

...的类型推断、更新的行集1.1和JDBC4.1、增强的托管bean、try语句中的自动资源管理、压缩的64位指针、JVM支持等等。Java8的一些特性包括Lambda表达式、接口默认和静态方法、无符号整数算法、并发API增强、空引用模板、新的JavaScript...

  • 发布于 2021-07-09 22:54
  • 阅读 ( 240 )