JDBC学习第一站之Statement与PreparedStatement
来源:互联网 发布:零点有数科技 知乎 编辑:程序博客网 时间:2024/05/22 22:23
Statement:
通过类的名字,把类(元数据对象)加载到内存中,加载驱动,由于是对数据流做操作,一定要加异常处理,后面也是
// 通过类的名字,把类(元数据对象)加载到内存中Class.forName("com.mysql.jdbc.Driver");
创建一个数据库链接,getConnection方法中的第一个参数是指数据库类型和所操作数据库的名称,第二个参数是指用户名,第三个参数是指password<密码>
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/score", "root", "123456");然后创建一个Statement对象
Statement stm = conn.createStatement();
一般执行SQL语句就是用,如果是查询则返回的是一张二维关系表,所以用ResultSet对象收集
<//执行增、删、改语句,返回int型,受影响的行数stm.executeUpdate(strSql);//返回一个ResultSet对象,其实就是一个表或者视图rst = stm.executeQuery(strSql);
ResultSet对象集,然后输出结果,如下
//输出结果while(rst.next()) {// 游标下移一行System.out.println(rst.getString("Sid") + "\t" + rst.getString("Sname"));}
如果对数据库的操作完成了,则需要在finally里面关闭前面创建的对象,对象销毁按照创建的栈来进行
finally {//打开是先打开Connection,再打开ResultSet//关闭是反的关闭if(rst != null) {try {rst.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(stm != null) {try {stm.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(conn != null) {try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
总的代码:
package JDBC_Study;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import java.sql.ResultSet;public class MySqlDemo {public static void main(String[] args) {String strSql = "select * from student where ssex = '男';";//Connection conn = null;Statement stm = null;ResultSet rst = null ;try {// 通过类的名字,把类(元数据对象)加载到内存中Class.forName("com.mysql.jdbc.Driver");//conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/score", "root", "123456");stm = conn.createStatement();//执行增、删、改语句,返回int型,受影响的行数stm.executeUpdate(strSql);//返回一个ResultSet对象,其实就是一个表或者视图rst = stm.executeQuery(strSql);//输出结果while(rst.next()) {// 游标下移一行System.out.println(rst.getString("Sid") + "\t" + rst.getString("Sname"));}} catch (ClassNotFoundException | SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {//打开是先打开Connection,再打开ResultSet//关闭是反的关闭if(rst != null) {try {rst.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(stm != null) {try {stm.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(conn != null) {try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}
PreparedStatement:
package JDBC_Study;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class PreparedStatementDemo {public static void main(String[] args) {Connection conn = null;PreparedStatement stmt = null;ResultSet rst = null ;String strSql = "select * from student where sid = ?";try {// 通过类的名字,把类(元数据对象)加载到内存中Class.forName("com.mysql.jdbc.Driver");//conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/score", "root", "123456");//执行增、删、改语句,返回int型,受影响的行数//pStm.executeUpdate();//返回一个ResultSet对象,其实就是一个表或者视图stmt = conn.prepareStatement(strSql);stmt.setString(1, "100081");rst = stmt.executeQuery();//输出结果while(rst.next()) {// 游标下移一行System.out.println(rst.getString("Sid") + "\t" + rst.getString("Sname"));}} catch (ClassNotFoundException | SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {//打开是先打开Connection,再打开ResultSet//关闭是反的关闭if(rst != null) {try {rst.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(stmt != null) {try {stmt.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(conn != null) {try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}
Statement 与 PreparedStatement 的优点和缺点:
PreparedStatement接口继承Statement接口
PreparedStatement比普通的Statement对象使用起来更加灵活,更有效率
提高了代码的可读性和可维护性
提高了SQL语句执行的性能
提高了安全性
0 0
- JDBC学习第一站之Statement与PreparedStatement
- JDBC之Statement与preparedStatement
- JDBC statement与preparedStatement
- JDBC之statement与preparedstatement的区别
- JDBC学习笔记之dml语句(PreparedStatement&Statement)
- 重温jdbc中的PreparedStatement与Statement
- JDBC中Statement与PreparedStatement的区别
- JDBC中Statement与PreparedStatement的区别
- JDBC中Statement与PreparedStatement的区别
- JDBC中Statement与PreparedStatement的区别
- JDBC 4 PreparedStatement 与Statement 的区别
- JDBC PreparedStatement 与Statement 的区别
- (转)JDBC应用中的PreparedStatement 与Statement
- JDBC回顾二PreparedStatement与Statement
- JDBC之Statement,PreparedStatement,CallableStatement的区别
- JDBC之Statement,PreparedStatement,CallableStatement的区别
- JDBC之Statement,PreparedStatement,CallableStatement的区别
- JDBC之使用Statement,PreparedStatement,ResultSet
- LibRTMP源代码分析10:处理消息(Handle Message)
- 经历过这个阶段的人共勉
- TS数据结构分析
- eclipse颜色配置方案
- x86体系结构下Linux-2.6.26启动流程
- JDBC学习第一站之Statement与PreparedStatement
- iOS开发之指定UIView的某几个角为圆角
- x86体系结构下Linux-2.6.26的中断处理
- poj1850
- 使用 C++ 处理 JSON 数据交换格式
- CentOS 6下安装nodejs 0.9.0
- Node.js:用JavaScript写服务器端程序-介绍并写个MVC框架
- Linux中断(interrupt)子系统之二:arch相关的硬件封装层
- AppCan 移动应用开发第一课 AppCan UI 详讲