大家都知道Statement.PrepareStatement 和CallableStatement 对象,其实它们是interface,为什么JDBC2.0中要提供这三个对象呢?对于Statement就是为了实现简单的SQL语句,但是PrepareStatement和CallableStatement是为了: 1) Prevent SQL inject attack 2) Catch of DB overflow 3) Readable and maintained of code 4) Ef…
1.JDBC中Statement接口和PrepareStatement接口关系与区别 Statement接口不能使用占位符?,需要拼sql,所以没有setInt,setString等方法:Preparement接口继承了Statement接口,不需要拼sql,可以使用占位符,所以有setInt,setString等方法: Preparement是预编译的,编译一次,sql不改变的话,后面执行就不需要编译了,效率高: 可以防止sql注入攻击.…
© 版权声明:本文为博主原创文章,转载请注明出处 1.问题描述: 启动hibernate测试案例时报错如下: org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDat…
WARN: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statementorg.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement 图中触犯了sql保留字describe mysql5.7保留字:  https://dev.mysq…
package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DButil { public static void main(String[] arg…
参考:https://www.cnblogs.com/Lxiaojiang/p/6708570.html JDBC核心API提供了三种向数据库发送SQL语句的类: Statement:使用createStatement()创建: PreparedStatement:经过预编译并存储在PreparedStatement对象中的SQL语句,使用prepareStatement()方法创建. CallableStatement:用于执行SQL存储过程,使用prepareCall()方法创建. 1. S…
Java提供了 Statement.PreparedStatement 和 CallableStatement三种方式来执行查询语句: PreparedStatement是用于执行参数化查询 预编译statement,提高查询速度,防止sql注入.通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象.数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来…
Oracle的建有参存储过程的过程 procedure pro_01(v_01 in number,v_02 out varchar2) as begin select name into v_02 from test where id = v_01; exception when no_data_found then dbms_output.put_line('no data'); when too_many_rows then dbms_output.put_line('too many r…
参考文章: http://blog.csdn.net/wang379275614/article/details/23393335 概念 JDBC-数据库连接,是由一些类和接口构成的API,是J2SE的一部分,有java.sql.javax.sql包组成.下面看一下JDBC API与应用程序和数据库驱动及数据库之间的关系: 可以看出JDBC是Sun公司为应用程序与数据库驱动之间提供的一组接口(规范).数据库驱动是实现数据库操作的类,它并不由sun公司来实现,而是由具体的公司来根据sun提供的规范…
在使用MySQL的JDBC时,如果查询结果集过大,使用一次查询,可能会出现Java.lang.OutOfMemoryError: Java heap space问题,因为DB服务器端一次将查询到的结果集全部发送到Java端保存在内存中而造成OOM. MySQL JDBC需要一条SQL从数据库读取大量数据,而不发生JVM OOM,可以采用以下方法之一:    1.当statement设置以下属性时,采用的是流数据接收方式,每次只从服务器接收部份数据,直到所有数据处理完毕,不会发生JVM OOM.…
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import team.JDBCTest; public class DBCStudent { // 定义数据库访问参数 String url = "jdbc:sqlserver://localho…
以下是使用Statement对象的批处理的典型步骤序列 - 使用createStatement()方法创建Statement对象. 使用setAutoCommit()将自动提交设置为false. 使用addBatch()方法在创建的Statement对象上添加SQL语句到批处理中. 在创建的Statement对象上使用executeBatch()方法执行所有SQL语句. 最后,使用commit()方法提交所有更改. 此示例代码是基于前面章节中完成的环境和数据库设置编写的. 以下代码片段提供了使用…
关系与区别 Statement.PreparedStatement和CallableStatement都是接口(interface) Statement 1.Statement接口提供了执行语句和获取结果的基本方法: 2.Statement继承自Wrapper 3.普通的不带参的查询SQL:支持批量更新,批量删除; 4.Statement每次执行sql语句,数据库都要执行sql语句的编译 ,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement.  CallableS…
Statement该对象用于执行静态SQL语句并返回它产生的结果.表示所有的参数在生成SQL的时候都是拼接好的,容易产生SQL注入的问题 PreparedStatement对象是一个预编译的SQL语句.动态SQL 功能1.执行SQL 3个方法 ①方法:execute() 可以执行任意的SQL,用的不多了解 修饰/返回值类型:boolean 2.executeUpdate() 执行DML语句 方法:executeUpdate() 执行DML语句(insert.delete.update)增删改数据…
Statement接口: 用于执行静态SQL语句并返回它所生成结果的对象. 三种Statement类: Statement: 由createStatement创建,用于发送简单的SQL语句(最好是不带参数的) PreparedStatement: 继承Statement接口,由preparedStatement创建,用于发送含有一个或多个输入参数的sql语句.PreparedStatement对象比Statement对象的效率更高,并且可以防止SQL注入. CallableStatement:…
想着写一篇hibernate的博文,于是准备从头开始,从官网下了最新的稳定版本来做讲述. 结果利用hibernate自动建表的时候发生下面这个问题. 我很纳闷,之前用低版本一点的没有发生这个问题啊. 于是,我把必要文件都拷到之前那个hibernate版本是5.0.7的工程中,结果并没有发生问题. 所以,就确定了是hibernate版本问题.(查了一下那个type="xxx"之后,察觉应该是hibernate跟mysql版本协调问题.在稍旧的版本中,仍然支持使用旧的方言,而在新版本中就要…
当获得了与数据库的连接后,就可以与数据库进行交互了. JDBC Statement,CallableStatement和PreparedStatement接口定义了可用于发送SQL或PL/SQL命令,并从数据库接收数据的方法和属性. 它们还定义了有助于在Java和SQL数据类型的数据类型差异转换的方法.下表提供了每个接口定义,以及使用这些接口的目的的总结. 接口 推荐使用 Statement 用于对数据库进行通用访问,在运行时使用静态SQL语句时很有用. Statement接口不能接受参数. P…
1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.012-[疯狂Java讲义第3版 李刚]-  JDBC Style:EBook Series:Java Since:2017-10-08 End:.... Total Hours:... Degree Of Diffculty:2 Degree Of Mastery:2 Practical Level:2 Desired Goal:2 Archieve Goal:.... Gerneral Eval…
 需要的jdbc jar 包: mysql-connector-java-5.1.38-b...960.9 KB ojdbc6.jar2.0 MB sqljdbc4.jar455.4 KB   数据持久化分为很多状态  瞬时状态: 保存在内存的程序数据,程序退出后,数据就消失了,称为瞬时状态. 持久化:  将程序数据在瞬时状态和持久状态之间转换的机制. 持久状态: 保存在磁盘上的程序数据,程序退出后依然存在,称为程序数据的持久状态. 数据持久化技术: Hibernate : hibernate为…
当获得了与数据库的连接后,就可以与数据库进行交互了.JDBC Statement,CallableStatement和PreparedStatement接口定义了可用于发送SQL或PL/SQL命令,并从数据库接收数据的方法和属性. Statement:用于对数据库进行通用访问,在运行时使用静态SQL语句时很有用. Statement接口不能接受参数. PreparedStatement:当计划要多次使用SQL语句时使用.PreparedStatement接口在运行时接受输入参数. Callabl…
1.mybatis的历史: mybatis是apache的一个开源项目,2010被google收购,转移到google code. mybatis是一个优秀的持久层框架,对jdbc操作进行了封装,是操作数据库变得简单. 2.mybatis的架构和工作原理 mybatis的原理: 通过xml或者注解配置需要执行的statement(prepareStatement,CallableStatement) 然后进行输入映射,生成需要执行的sql信心保存在MappedStatement中,通过mybat…
JDBC(Java Data Base Connectivity),用于实现java语言编程与数据库连接的API. 数据库驱动:应用程序并不能直接使用数据库,而需要通过相应的数据库驱动程序后再操作数据库:而JDBC就是实现应用程序去加载具体的驱动: 应用程序---JDBC--->驱动程序-->数据库 建立JDBC连接: 导入JDBC包: import java.sql.* 注册JDBC驱动程序并创建连接对象conn: Class.forName("com.mysql.jdbc.Dri…
MySQL Table of Contents 1. 安装与配置 2. 数据库与账户 3. 用户跟权限 4. 常用命令 5. 表的创建 6. 数据类型 7. 主键约束 8. 表的修改 9. 引擎(Engine) 10. 存储过程 11.优化(Optimization) 12.UseCases 13. 备份与恢复 14.数据迁移示例 15. 数据处理示例 16. 省市县模式数据库设计 17. 查询练习 1 安装与配置 MySQL/MariaDB: https://www.mysql.com/cn/…
JDBC提供了Statement.PreparedStatement和CallableStatement三种方式来执行查询语句,其中Statement用于通用查询,PreparedStatement用于执行参数化查询,而CallableStatement则是用于存储过程 1. Statement.PreparedStatement和CallableStatement都是接口(interface). 2. Statemet继承自Wrapper.PreparedStatement继承自Stateme…
以下内容引用自http://wiki.jikexueyuan.com/project/jdbc/statements.html: 一旦获得了数据库的连接,就可以和数据库进行交互.JDBC的Statement,CallableStatement和PreparedStatement接口定义的方法和属性,可以发送SQL命令或PL/SQL命令到数据库,并从数据库接收数据. 在数据库中,它们还定义了帮助Java和SQL数据类型之间转换数据差异的方法. 下表提供了每个接口的用途概要,根据实际目的决定使用哪个…
JDBC提供了数据库batch处理的能力,在数据大批量操作(新增.删除等)的情况下能够大幅度提升系统的性能.我曾经接触的一个项目,在没有採用batch处理时,删除5万条数据大概要半个小时左右,后来对系统进行改造,採用了batch处理的方式,删除5万条数据基本上不会超过1分钟.看一段JDBC代码: // 关闭自己主动运行 con.setAutoCommit(false); Statement stmt = con.createStatement(); stmt.addBatch("INSERT I…
JDBC提供了数据库batch处理的能力,在数据大批量操作(新增.删除等)的情况下能够大幅度提升系统的性能.我曾经接触的一个项目,在没有採用batch处理时,删除5万条数据大概要半个小时左右,后来对系统进行改造,採用了batch处理的方式,删除5万条数据基本上不会超过1分钟.看一段JDBC代码: // 关闭自己主动运行 con.setAutoCommit(false); Statement stmt = con.createStatement(); stmt.addBatch("INSERT I…
1.错误描述 org.hibernate.exception.SQLGrammarException: error executing work at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123) at org.hibernate.exception.internal.StandardSQLExceptionConverter.con…
在上一篇[Java编程]建立一个简单的JDBC连接-Drivers, Connection, Statement and PreparedStatement我们介绍了怎样使用JDBC驱动建立一个简单的连接.并实现使用Statement和PreparedStatement进行数据库查询,本篇blog将接着上篇blog通过SQL注入攻击比較Statement和PreparedStatement.当然这两者还有非常多其它方面的不同,在之后的blog中会继续更新. [Statement查询] 1.在DB…
参考:预编译语句(Prepared Statements)介绍,以MySQL为例 1. 背景 本文重点讲述MySQL中的预编译语句并从MySQL的Connector/J源码出发讲述其在Java语言中相关使用.注意:文中的描述与结论基于MySQL 5.7.16以及Connect/J 5.1.42版本. 2. 预编译语句是什么 通常我们的一条sql在db接收到最终执行完毕返回可以分为下面三个过程: 词法和语义解析 优化sql语句,制定执行计划 执行并返回结果 我们把这种普通语句称作Immediate…