利用数据库连接池进行增删改查(全 详细)

通过数据库连接池对数据库进行增删改查的操作

c3p0是一个库。它扩展了传统的jdbc数据库连接池,并且支持JDBC3规范和JDBC2的标准扩展。通过数据库池连接数据库比传统的数据库连接要有许多优点 传统数据库需要建立连接,断开连接,而通过数据库连接池则不需要这样进行,数据库连接池在初始化时,就已经建立连接,所以如果要使用数据库,则相当于在数据库池中找一个空闲的连接就行,不需要数据库时,则将连接再放回池子中即可。

在这里插入图片描述完成以后就是这样子的 点击del会删除 点击update可以更新 点击 insert可以增加

通过数据库池连接需要相应的jar包
数据库连接池jar包
这里面除了最后一个和倒数第3个应该都是关于数据库连接池的jar包 我每次都会全放进项目里,所以也不是很清楚 将这些jar包拖到jar包位置
这个位置就可以了。

然后接下来就是配置c3p0-config.xml文件 一定是xml文件

<c3p0-config>
  <default-config>
  <property name="driverClass">com.mysql.jdbc.Driver</property>
   <property name="jdbcUrl">jdbc:mysql://localhost:3306/class</property> ---最后面的这个class是你建的数据库的名字
   <property name="user">root</property> ----这是你的数据库账号的名字 不是表名  也不是数据库名字!!!
   <property name="password">fjw010307</property>---这是你数据库的密码
  </default-config>
</c3p0-config>

将配置文件放在src下面 不要放在包内

配置完这些 距离成功连接就不晚了
接下来就可以进行配置工具类了

public class ClassDao {
QueryRunner runner=new QueryRunner(new ComboPooledDataSource());//QreryRunner类(org.apache.commons.dbutils.QueryRunner) 是Dbutils的核心类之一,它显著的简化了SQL查询 这个记住就可以了 如果想要更深入的了解 就去查一查 

	public List findAll() throws SQLException//查询所有信息 返回的集合
	{
	  String sql="select * from Lesson"; //这是你的sql语句
	  List list=(List) runner.query(sql, new BeanListHandler(Lesson.class));//这一句的意思是执行sql语句 将查询的结果集给list
	  return list;
	}
	```
	在数据库中删除↓
	public boolean del(String classname) throws SQLException
	{//通过classname进行删除  这里的classname是我数据库里的自己的一个数据
		String sql="delete  from Lesson where Classname=?";//sql语句 这是
		int num=runner.update(sql,classname);//这里的classname是sql语句里的第一个?
		if (num>0)//对返回的进行判断 如果大于0 则是操作成功 返回true 
		{
		  return true;
		}else {
			return false;
		}
	}

在数据库中插入↓

public boolean insert(Lesson lesson) throws SQLException
	{//增加
		String sql="insert into lesson(Classname,Teachername,StudentNum) values(?,?,?)";//sql语句
		int num=runner.update(sql, lesson.getClassname(),lesson.getTeachername(),lesson.getStudentNum());//这是问号对应的数据 
		if (num>0)
		{
		  return true;
		}else {
			return false;
		}
	}

这里是更新 (个人认为更新应该是这四个里最难的了)

public boolean update(Lesson lesson) throws SQLException
	{//更新
		String sql="update lesson set Teachername=?,StudentNum=? where Classname=? ";
		int num=runner.update(sql, lesson.getTeachername(),lesson.getStudentNum(),lesson.getClassname());
		if(num>0)
		 {
			 return true;
		 }else
		 {
			 return false;
		 }
		
	}

以上是增删改查了 下一步就是建立显示页面了
list页面这个只做了表格 没有做其他页面的东西 这个页面会显示出来数据库的东西

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>   
<%@page import="java.util.List"%><!-- 这里是导包 导进LIist的包 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<table>
 <tr>
  <td>className</td>
  <td>TeacherName</td>
  <td>StudentNum</td>
 </tr>
 <c:forEach items="${sessionScope.alllesson}" var="lesson"><!-- jsp里的遍历集合  items里是要遍历的集合 而var是这个集合里当前遍历的对象 -->
 <tr>
 <td>${lesson.classname}</td>
 <td>${lesson.teachername}</td>
 <td>${lesson.studentNum}</td>
 <td><a href="Lessonservlet?opre=del&classname=${lesson.classname}">del</td><!-- 点击这里的del就会删除 -->
 <td><a href="update.jsp?classname=${lesson.classname}">update</td>
 </tr><!-- 点击这里将会更新 先跳转到更新页面 -->


 </c:forEach>


</table>
 <td><a href="insert.jsp">insert</td><!-- 点击这里会跳转到添加页面 -->
</body>
</html>

点击 insert 后会到这个页面 就是增加页面
增加页面 增加页面代码如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>增加</title>
</head>
<body>       
<form action="Lessonservlet?opre=insert" method="post">
<table>
<tr>
<td>班级名称:</td>
<td><input type="text" name="classname"></td>
</tr>    
<br>
<tr>
<td>教师名称:</td>
<td><input type="text" name="teachername"></td>
</tr>
<br>
<tr>
<td>学生数量:</td>
<td><input type="text" name="studentnum"></td>
</tr>  这就是增加页面 要注意这里的name的值 name的值就是servlet里要获取的属性的名字 后面要用的到的 
<tr>

<td><input type="submit" value="添加"></td>
</tr>


</form>
</body>
</html>

下面来写servlet类

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
	    String opre=request.getParameter("opre");//这里是得到 opre 的值 将这个值给这里定义的opre
	    //System.out.println(opre);
	    ClassDao dao=new ClassDao();
	    if("select".equals(opre))
	    {//这里是查询
	    	HttpSession session=request.getSession();//利用session 保存查询出来的集合 
	    	try {
				List<Lesson> alllesson=dao.findAll();
				session.setAttribute("alllesson", alllesson);//如果不大明白这一句 就去查一下session 
				response.sendRedirect("list.jsp");//跳转
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    	
	    }
	    if("update".equals(opre))//更新
	    {
	    	HttpSession session  = request.getSession();
	    	String classname=(String) session.getAttribute("classname"); //这里也是session的使用
	    	//String classname= (String) request.getAttribute("classname");
	    	System.out.println("classname是"+classname);
	    	String teachername=request.getParameter("teachername");
	    	System.out.println("教师名字是"+teachername);
	    	int studentnum=Integer.parseInt(request.getParameter("studentnum"));//获得的数据是String类型的 这里要转换成int
	    	//System.out.println("学生数量是"+studentnum);
	    	Lesson lesson=new Lesson(classname,teachername,studentnum);
	    	try {
				boolean K=dao.update(lesson);
				if(K)
				{
					response.sendRedirect("index.jsp");
				}else {
					System.out.println("跟新失败");
				}
				
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    	
	    }
	    
	    if("insert".equals(opre))
	    {
	    String 	classname=request.getParameter("classname");
	    String 	teachername=request.getParameter("teachername");
	    int studentnum=Integer.parseInt(request.getParameter("studentnum"));
	
	    Lesson lesson=new Lesson(classname,teachername,studentnum);
	    try {
			boolean K=dao.insert(lesson);
			if(K)
			{
				response.sendRedirect("index.jsp");
				
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    }
	    if("del".equals(opre))
	    {
	    	String classname=request.getParameter("classname");
	    	System.out.println(classname);
	    	try {
				boolean K=dao.del(classname);
				if(K)
				{
					response.sendRedirect("index.jsp");
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    	
	    }
	    
	    
	    
	
	}

最后就是更新了 我这里实现的是点击每一行后面的更新就可以跳转到更新页面 不需要再输入需要更新的classname 也是利用session传值的

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@page import="javax.servlet.http.HttpSession"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>更新</title>
</head>
<body>
 <%String classname=request.getParameter("classname"); 
 //获取classname
  session.setAttribute("classname",classname);
  //set session
 %>
<form action="Lessonservlet?opre=update&classname1=<%=classname %> " method="post">

 <tr>

 <td>班级名字:<%=classname %></td>
 </tr>
 <br>
 <tr>
 <td>教师名字:</td>
 <td><input type="text" name="teachername"></td>
 </tr>
<br>
<tr>
 <td>学生数量:</td>
 <td><input type="text" name="studentnum"></td>
 </tr> 
 <br>
<tr>
 <td><input type="submit" value="update"></td>
 </tr>


</form>
</body>
</html>

以上就用j数据库连接池完成了增删改查 虽然页面显示并不是这莫完美
还希望大家多点赞👍

  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值