数据库SQL Server2012笔记(八)——Statement与PreparedStatement的区别,JDBC方式操作数据库
2015-08-25 09:45
375 查看
1、Statement与PreparedStatement的区别
1)都可用于 把sql语句从java程序中发送到制定数据库,并执行sql语句。
2)区别
直接使用Statement,驱动程序一般不会对sql语句做处理,而直接交给数据库。
使用PreparedStatement,形成预编译的过程,并且会对语句做字符集的转换(至少在sql server中如此)。好处:对于多次重复执行的语句,PreparedStatement效率更高,适合批量(batch),且解决系统的本地化问题。
PreparedStatement可有效防止危险字符的注入,即sql注入问题。但要求用“?”赋值方式才可以。"?"可解决注入漏洞问题
ps=ct.PreparedStatement("select * from dept where deptno=? and loc=?");
ps.setInt(1,20);
ps.setString(2,"dallas");
2、JDBC方式操作数据
1)定义对象
PreparedStatement ps=null;
Connection ct=null;
ResultSet rs=null;
2)初始化
加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
得到连接
ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;database=数据库名","用户名","密码")
127.0.0.1表示要连接的数据库的IP,此处表示本地
1433表示sqlserver的默认端口(一共65535个端口)
oracle:1521,mysql:3306
创建火箭车
ps=ct.PreparedStatement("Select * from emp");
执行
rs=ps.executeQuery();
rs=ps.executeUpdate();
循环读取
while(rs.next()){ }
rs指向结果集的第一条的前一条,一定要rs.next()一下。
如果取值按编号取,则需要一一对应。
如果取值按猎命去,则顺序灵活。
3、作业相关问题
1)job<>'manager':不等于
2)oracle中有一个可以获得每个月的最后一天的方法
3)sql server:DATEDIFF(datapart,startpart,endpart)
4)upper len substring
以首字母大写的方式显示员工姓名
select upper(substring(ename,1,1))+lower(substring(ename,2,len(ename))) from emp
5)len(字段名):字段长度
6)显示所有员工姓名的前三个字符
select substring(ename,1,3) from emp
7)replace(字段,‘被替代’,‘替换’)
8)datepart(年/月/日...,字段名)
1)都可用于 把sql语句从java程序中发送到制定数据库,并执行sql语句。
2)区别
直接使用Statement,驱动程序一般不会对sql语句做处理,而直接交给数据库。
使用PreparedStatement,形成预编译的过程,并且会对语句做字符集的转换(至少在sql server中如此)。好处:对于多次重复执行的语句,PreparedStatement效率更高,适合批量(batch),且解决系统的本地化问题。
PreparedStatement可有效防止危险字符的注入,即sql注入问题。但要求用“?”赋值方式才可以。"?"可解决注入漏洞问题
ps=ct.PreparedStatement("select * from dept where deptno=? and loc=?");
ps.setInt(1,20);
ps.setString(2,"dallas");
2、JDBC方式操作数据
1)定义对象
PreparedStatement ps=null;
Connection ct=null;
ResultSet rs=null;
2)初始化
加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
得到连接
ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;database=数据库名","用户名","密码")
127.0.0.1表示要连接的数据库的IP,此处表示本地
1433表示sqlserver的默认端口(一共65535个端口)
oracle:1521,mysql:3306
创建火箭车
ps=ct.PreparedStatement("Select * from emp");
执行
rs=ps.executeQuery();
rs=ps.executeUpdate();
循环读取
while(rs.next()){ }
rs指向结果集的第一条的前一条,一定要rs.next()一下。
如果取值按编号取,则需要一一对应。
如果取值按猎命去,则顺序灵活。
3、作业相关问题
1)job<>'manager':不等于
2)oracle中有一个可以获得每个月的最后一天的方法
3)sql server:DATEDIFF(datapart,startpart,endpart)
4)upper len substring
以首字母大写的方式显示员工姓名
select upper(substring(ename,1,1))+lower(substring(ename,2,len(ename))) from emp
5)len(字段名):字段长度
6)显示所有员工姓名的前三个字符
select substring(ename,1,3) from emp
7)replace(字段,‘被替代’,‘替换’)
8)datepart(年/月/日...,字段名)
相关文章推荐
- oracle时间操作
- ORACLE 查看锁
- Oracle数据库默认用户名和密码
- Oracle 11g Express Edition 安装及常见问题
- 如何移动系统/用户数据库
- MySQL主从复制几个重要的参数
- oracle 11G RAC scan监听器配置静态注册
- 【T_SQL】 基础 视图、存储过程、触发器
- 【T_SQL】 基础 视图、存储过程、触发器
- mysql安装图解 mysql图文安装教程(详细说明)
- Oracle恢复误删的数据或表,解除锁定SQL或table
- MySQL 连接本地数据库、远程数据库命令
- core data
- 封装类之MYSQLHelper(C#连接MySql数据库)
- ORACLE多表查询之子查询
- mongodb and 和 or语句写法
- 固定分组计算的sql简化
- oracle 11G Rac service管理
- ORACLE-016:ora-01720 授权选项对于'xxxx'不存在
- ORACLE-016:ora-01720 授权选项对于'xxxx'不存在