Statement该对象用于执行静态SQL语句并返回它产生的结果。
表示所有的参数在生成SQL的时候都是拼接好的,容易产生SQL注入的问题
PreparedStatement对象是一个预编译的SQL语句。动态SQL
功能
1.执行SQL
3个方法
①方法:execute() 可以执行任意的SQL,用的不多了解
修饰/返回值类型:boolean
2.executeUpdate() 执行DML语句
方法:executeUpdate() 执行DML语句(insert、delete、update)增删改数据。不常使用:DDL语句(create、drop、alter)增删改表和库
修饰/返回值类型:int
返回值:执行DML语句受影响的行数。可以通过这个值来判断SQL语句是否执行成功>0执行成功,反之失败。
执行DDL语句没有返回结果
插入一条数据
packagecn.itcast.jdbc;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.sql.Statement;/*** insert插入
**/
//第一步不是导入驱动架包了,因为已经导入过了
public classJdbcDemo2 {public static voidmain(String[] args) {
Statement stmt= null;
Connection conn= null;try{//1.注册驱动,会抛出ClassNotFoundException异常(MySQL5.0后可省略)
Class.forName("com.mysql.jdbc.Driver");//2.获取Connection对象,会抛出SQLException异常(因为连接的是本机的数据库所以ip地址和端口号可以省略不写)
conn= DriverManager.getConnection("jdbc:mysql:///myemployees","root","ROOT");//3.定义SQL
String sql="insert into job_grades values('ma','16789','16789');";//4.获取执行SQL的对象Staement
stmt =conn.createStatement();//5.执行SQL(返回一个结果)
int count = stmt.executeUpdate(sql);//影响的行数//6.处理结果
System.out.println(count);if (count>0){
System.out.println("添加成功");
}else{
System.out.println("添加失败");
}//7.释放资源(如果第5步执行报错就不会执行下面的语句,下面的代码就不会正常执行)
} catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}finally{//8.所以应该在finally里释放资源//stmt.close();因为stmt不是全局变量,所以出了try的作用域就找不到了//先复制Statement stmt =,在等号后赋值为null//删除这句话中的“Statement” stmt = conn.createStatement();//stmt.close();//如果只这样写程序在执行第3步的时候报错,例如密码写错了之类的就会报空指针异常//所以先要判断//释放执行SQL的对象
if (stmt != null){try{
stmt.close();
}catch(SQLException e) {
e.printStackTrace();
}
}//还要释放数据库连接对象,再次执行上面的操作
if (conn != null){try{
conn.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}
}
}
修改插入的数据
packagecn.itcast.jdbc;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.sql.Statement;/*** update修改
**/
public classJdbcDemo3 {public static voidmain(String[] args) {
Connection conn= null;
Statement stmt= null;try{//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");//2.获取数据库连接对象
conn = DriverManager.getConnection("jdbc:mysql:///myemployees", "root", "ROOT");//3.定义SQL
String sql ="update job_grades set highest_sal = '999999' where grade_level = 'ma';";//4.获取执行SQL的对象
stmt =conn.createStatement();//5.执行SQL
int count =stmt.executeUpdate(sql);//6.处理返回结果
System.out.println(count);if (count>0){
System.out.println("修改成功");
}else{
System.out.println("修改失败");
}
}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}finally{//7.释放资源
if (stmt != null){try{
stmt.close();
}catch(SQLException e) {
e.printStackTrace();
}
}if (conn != null){try{
conn.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}
}
}
删除插入的数据
packagecn.itcast.jdbc;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.sql.Statement;/*** delete删除
**/
public classJdbcDemo4 {public static voidmain(String[] args) {//声明数据库连接对象
Connection conn = null;//声明数据库执行对象
Statement stmt = null;try{//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");//2.获取数据库连接对象
conn = DriverManager.getConnection("jdbc:mysql:///myemployees", "root", "ROOT");//3.定义SQL
String sql ="delete from job_grades where grade_level = 'ma';";//4.获取执行SQL的对象
stmt =conn.createStatement();//5.执行SQL
int count =stmt.executeUpdate(sql);//6.处理返回结果
System.out.println(count);if (count>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}finally{//7.释放资源
if (stmt != null){try{
stmt.close();
}catch(SQLException e) {
e.printStackTrace();
}
}if (conn != null){try{
conn.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}
}
}
1.executeUpdate() 执行DDL语句
packagecn.itcast.jdbc;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.sql.Statement;/** DDL语句
**/
public classJdbcDemo5 {public static voidmain(String[] args) {//声明数据库连接对象
Connection conn = null;//声明数据库执行对象
Statement stmt = null;try{//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");//2.获取数据库连接对象
conn = DriverManager.getConnection("jdbc:mysql:///myemployees", "root", "ROOT");//3.定义SQL
String sql ="create table stu (id int,name varchar(20));";//4.获取执行SQL的对象
stmt =conn.createStatement();//5.执行SQL
int count =stmt.executeUpdate(sql);//6.处理返回结果
System.out.println(count);
}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}finally{//7.释放资源
if (stmt != null){try{
stmt.close();
}catch(SQLException e) {
e.printStackTrace();
}
}if (conn != null){try{
conn.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}
}
}
3.executeQuery()执行DDL语句
方法:executeQuery(String sql) 执行DQL语句(select)查询语句
修饰/返回值类型:ResultSet (结果集)