本节课我学习的主要内容有:
1.PreparedStatement接口
PreparedStatement接口:
该接口是Statement接口的子接口。
表示预处理的Statement封装语句,通过?来向sql语句传入参数。
允许传入不同的参数重复执行sql语句。
优点:
增加了预编译的功能,可以预防sql注入。
提高了语句执行速度。
可以设置参数。
Test01类(测试传参之后的各种对接数据库的方法):
package LessonForJDBC04;
import java.sql.*;
import java.util.*;
class StudentBean3
{
private int No;
private String Name;
private String Sex;
private int Age;
public StudentBean3()
{
}
public StudentBean3(int no, String name, String sex, int age)
{
super();
No = no;
Name = name;
Sex = sex;
Age = age;
}
public int getNo()
{
return No;
}
public void setNo(int no)
{
No = no;
}
public String getName()
{
return Name;
}
public void setName(String name)
{
Name = name;
}
public String getSex()
{
return Sex;
}
public void setSex(String sex)
{
Sex = sex;
}
public int getAge()
{
return Age;
}
public void setAge(int age)
{
Age = age;
}
}
class StudentDAO3
{
//打印学生信息
public static ArrayList<StudentBean3> getAllStudentInf(Connection con)
{
ArrayList<StudentBean3> student_list = new ArrayList<StudentBean3>();
String sql = "SELECT NO,NAME,SEX,SAGE FROM STUDENTTEST01";
try
{
Statement sta = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = sta.executeQuery(sql);
while (rs.next() != false)
{
StudentBean3 sb = new StudentBean3(rs.getInt("NO"),rs.getString("NAME"),
rs.getString("SEX"),rs.getInt("SAGE"));
student_list.add(sb);
}
} catch (SQLException e)
{
e.printStackTrace();
}
return student_list;
}
//增加学生
public static int addStudentWithObject(Connection con, StudentBean3 stu)
{
int result = 0;
String sql = "INSERT INTO STUDENTTEST01 (NO,NAME,SEX,SAGE) VALUES (?,?,?,?)";
try
{
PreparedStatement ps1 = con.prepareStatement(sql);
//开始向问号传参:
ps1.setInt(1, stu.getNo());
//parameterIndex代表对应的问号是第几个。
//x是你要传入的值。
ps1.setString(2, stu.getName());
ps1.setString(3, stu.getSex());
ps1.setInt(4, stu.getAge());
result = ps1.executeUpdate();
} catch (SQLException e)
{
e.printStackTrace();
}
return result;
}
//修改学生信息
public static int updateStudentInfByNo(Connection con, StudentBean3 stu, int student_no)
{
int result = 0;
String sql = "UPDATE STUDENTTEST01 SET NAME=?,SEX=? WHERE NO=?";
try
{
PreparedStatement pt = con.prepareStatement(sql);
pt.setString(1, stu.getName());//更新的值
pt.setString(2, stu.getSex());
pt.setInt(3, student_no);//更新的目标
result = pt.executeUpdate();//更新
} catch (SQLException e)
{
e.printStackTrace();
}
return result;
}
//条件查询
public static ArrayList<StudentBean3> findStudentByNo(Connection con, int from_no, int to_no)
{
ArrayList<StudentBean3> student_list = new ArrayList<StudentBean3>();
String sql = "SELECT NO,NAME,SEX,SAGE FROM STUDENTTEST01 WHERE NO BETWEEN ? AND ?";
try
{
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, from_no);
ps.setInt(2, to_no);
ResultSet rs = ps.executeQuery();
while (rs.next() != false)
{
StudentBean3 student = new StudentBean3(rs.getInt("NO"),rs.getString("NAME"),
rs.getString("SEX"),rs.getInt("SAGE"));
student_list.add(student);
}
} catch (SQLException e)
{
e.printStackTrace();
}
return student_list;
}
}
public class Test01
{
public static Connection getConnection(String driver_class,String url,String user,String password)
{
Connection con = null;
try
{
Class.forName(driver_class);
con = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException | SQLException e)
{
e.printStackTrace();
}
return con;
}
public static void main(String[] args)
{
String driver_class = "oracle.jdbc.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String user = "scott";
String password = "tiger";
Connection con1 = getConnection(driver_class,url,user,password);
// StudentBean3 sb1 = new StudentBean3(10,"成流行","女",30);
// System.out.println(StudentDAO3.addStudentWithObject(con1, sb1));
// System.out.println(StudentDAO3.updateStudentInfByNo(con1, sb1, 10));
// ArrayList<StudentBean3> ar = StudentDAO3.getAllStudentInf(con1);
// ar.forEach((k1)->{
// System.out.println("学号:"+k1.getNo()+" 姓名:"+k1.getName()+" 性别:"+k1.getSex()+" 年龄:"+k1.getAge());
// });
ArrayList<StudentBean3> ar = StudentDAO3.findStudentByNo(con1,1,5);
ar.forEach((k1)->{
System.out.println("学号:"+k1.getNo()+" 姓名:"+k1.getName()+" 性别:"+k1.getSex()+" 年龄:"+k1.getAge());
});
}
}
本篇部分文字来源于:
咕嘟咖啡杨海滨老师 — 《java编程语言高级特性》
在这里十分感谢老师能够给我带来学习的激情。
2020.11.18
本文章是本人学习笔记,不进行任何商用所以不支持转载请理解!也请别拿去商用!
如果觉得对你有帮助那么欢迎你随时来回顾!
只为记录本人学习历程。
毕