使用statement执行sql语句
列的名字,不区分大小写。
statement执行静态的sql语句
preparedStatement执行预编译的sql语句。
数据库运行机制
(1)拿到指令
(2)检查指令正确性
(3)检查是否有足够的权限
(4)把sql加入sql缓存区 map<String(sql),执行任务>
(5)数据库取出sql缓存区执行任务执行
preparedStatement执行效率高,Statement执行效率低。
支持sql缓冲区的数据库:
oracle,SQLServer
不支持sql缓冲区
mysql;
select *from student where 1=1; 恒成立。
预编译防止sql注入
preparedStatement和Statement的区别
(1)语法不同,preparedStatement可以使用预编译的sql,而Statement只能使用静态的sql;
(2)效率不同:preparedStatement可以使用sql缓存区,效率比statement高
(3)安全性不同:PreparedStatement可以有效的防止sql注入,而statement不能防止sql注入
CallableStatement执行存储过程
输出参数,有个类型。
varchar(20),第二个参数,要注册一个类型,varchar。registerOutParameter()
类路径加载方式:
JdbcUtil.class.getResourceAsStream("/");代表calss的根目录
在java项目中,calss文件的根目录。bin目录
java文件的根目录。src目录。
在web项目中,calss 文件的根目录,从web-inf/class目录开始
软件设计原则:开闭原则
对修改是关闭的
对扩展是开放的。
加一个dao实现类,
实现相同的接口,
操作mysql数据库。
开发顺序,从下往上。
设计数据库
id,name,gender
列的名字,不区分大小写。
statement执行静态的sql语句
preparedStatement执行预编译的sql语句。
数据库运行机制
(1)拿到指令
(2)检查指令正确性
(3)检查是否有足够的权限
(4)把sql加入sql缓存区 map<String(sql),执行任务>
(5)数据库取出sql缓存区执行任务执行
preparedStatement执行效率高,Statement执行效率低。
支持sql缓冲区的数据库:
oracle,SQLServer
不支持sql缓冲区
mysql;
select *from student where 1=1; 恒成立。
预编译防止sql注入
preparedStatement和Statement的区别
(1)语法不同,preparedStatement可以使用预编译的sql,而Statement只能使用静态的sql;
(2)效率不同:preparedStatement可以使用sql缓存区,效率比statement高
(3)安全性不同:PreparedStatement可以有效的防止sql注入,而statement不能防止sql注入
CallableStatement执行存储过程
输出参数,有个类型。
varchar(20),第二个参数,要注册一个类型,varchar。registerOutParameter()
类路径加载方式:
JdbcUtil.class.getResourceAsStream("/");代表calss的根目录
在java项目中,calss文件的根目录。bin目录
java文件的根目录。src目录。
在web项目中,calss 文件的根目录,从web-inf/class目录开始
软件设计原则:开闭原则
对修改是关闭的
对扩展是开放的。
加一个dao实现类,
实现相同的接口,
操作mysql数据库。
开发顺序,从下往上。
设计数据库
id,name,gender