天天看点

JDBC部分知识点

一、JDBC --用java代码操作数据库  --CRUD(增删改查)

1.导入MySql驱动包

2.选择要连接的是哪一种数据库

Class.forName("com.mysql.jdbc.Driver");对类进行加载

3.通过主机号、端口号、用户名、密码创建一个连接

String url = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&CharacterEncoding=utf8";

String user = "root";

String password = "1234";

//DriverManager.getConnection(url,user,password);

4.选择要操作的数据库

Connection conn = DriverManager.getConnection(url,user,password);

5.打开一个命令窗口写SQL语句

PreparedStatment psta = conn.prepareStatment("select * from emp");

6.执行SQL语句,查看结果。

ResultSet rs = psta.executeQuery();

List<Emp> emplist = new ArrayList<Emp>();

While(re.next()){

emplist.add(new Emp(rs.getInt("sno"),rs.getString("sname"),rs.getInt("Salary"),rs.getString

("job"));

}

如果是增删改,则返回受影响的行数

如果是查询,则返回结果集

7.如果是查询,需要将结果集映射到JavaBean中

*别忘了关闭(倒着关):

if(rs!=null){

rs.close();

}

if(psta!=null){

psta.close();

}

if(conn!=null){

conn.close();

}

二、jdbc封装查询要考虑的问题

1.返回值类型不确定

2.sql语句不同(参数传递)

3.语句中可能带有参数(参数传递)

*把方法作为参数传进来

JDK1.8之前处理方式:new一个接口,里面有一个抽象方法,当做匿名内部类

List<Student> studentlist = JdbcUtil.executeQuery("select * from student",

new RowMap<Teacher>(){

public TeacherRowMapping(ResultSet rs){

studentlist.add(new Student(rs.getInt(sno),rs.getString(sname),rs.getInt

(Score),rs.getString(Ssex));

}

},null)

4.处理ResultSet方式不同

三、方法封装

添加:

1.接收表单传进的参数

String sno = req.getParameter("sno");

2.将参数封装到JavaBean

Student student = new Student();

student.setSno(sno);

3.调用服务进行添加

IstudentService service = new StudentServiceImpl();(如果这个还没写好,用null)

4.重定向到列表页

resp.sendRedirect("add.jsp");

修改:

1.接收sno

String sno = req.getParameter("sno");

2.通过sno查询想要修改的数据

IstudentService service = new StudentServiceImpl();

Student student = service.getStudent(sno);

3.将数据放进作用域

req.setAttribute("student",student);

4.转发到修改页面

req.getRequestDispatcher("student").forward(req,resp);

继续阅读