javaweb05(绑定&删除&查看&修改)

一.查看:核心代码

思路:根据传过来的nid拿到数据库的内容给对应的值赋值 

//接收从主页面admin.jsp传递过来的nid
        String nid=request.getParameter("nid");
		//两个字符串
		String URL="jdbc:oracle:thin:@localhost:1521:orcl";
		String CNAME="oracle.jdbc.driver.OracleDriver";
		//加载驱动
		Class.forName(CNAME);
		//创建连接
		Connection con=DriverManager.getConnection(URL, "scott", "tiger");
		//定义SQL语句
		String sql="select * from news279 where nid="+nid;
		//获得执行对象
		PreparedStatement ps=con.prepareStatement(sql);
		//获得结果集
		ResultSet rs=ps.executeQuery();
		String ntitle="";//标题
		String nauthor="";//作者
		String naddtime="";//时间
		String ncontent="";//内容
		//遍历结果集
		if(rs.next()){
			ntitle=rs.getString(3);
			nauthor=rs.getString(4);
			ncontent=rs.getString(6);
			naddtime=rs.getString(8);
			
		}
		 //关闭资源
		if(con!=null&&!con.isClosed()){
	 		con.close();
	 	}
	 	if(ps!=null){
	 		ps.close();
	 	}
	 	if(rs!=null){
	 		rs.close();
	 	}

如图:

 

 二.删除:

思路:也是根据传来的nid然后找到对应的内容进行删除

 //接收nid request
    String nid=request.getParameter("nid");
    //jdbc连接oracle
    //根据nid进行删除
    //两个字符串
    String URL="jdbc:oracle:thin:@localhost:1521:orcl";
    String CNAME="oracle.jdbc.driver.OracleDriver";
    //加载驱动
    Class.forName(CNAME);
    //创建连接
    Connection con=DriverManager.getConnection(URL, "scott","tiger");
    //定义SQL语句
    String sql="delete from news279 where nid="+nid;
    //获得执行对象
    PreparedStatement ps=con.prepareStatement(sql);
    //开始执行
    int n=ps.executeUpdate();
    //关闭资源
	if(con!=null&&!con.isClosed()){
 		con.close();
 	}
 	if(ps!=null){
 		ps.close();
 	}
    //判断
    if(n>0){
    	//删除成功
    	response.sendRedirect("/q4/news/admin.jsp");
    	
    }else{
    	//说明删除失败
    	out.print("<script>alter('删除失败');location.href='admin'.jsp</script>");
    	
    }
 	

如图:

 三.绑定下拉框

根据tid拿到tname的值然后进行赋值

//jdbc连接oracle 查询新闻的信息 主题编号 主题名称
		    //两个字符串
		    String URL="jdbc:oracle:thin:@localhost:1521:orcl";
		    String CNAME="oracle.jdbc.driver.OracleDriver";
		    //加载驱动
		    Class.forName(CNAME);
		    //创建连接
		    Connection con=DriverManager.getConnection(URL, "scott", "tiger");
		    //定义SQL语句
		    String sql="select *from topic279 order by tid ";
		    //获得执行对象
		    PreparedStatement ps=con.prepareStatement(sql);
		    //获得结果集
		    ResultSet rs=ps.executeQuery();
		    //遍历结果集
		    while(rs.next()){
          %>
          <option value='<%=rs.getInt(1)%>'><%=rs.getString(2) %></option>
          <%
		    }
		    //关闭资源
			if(con!=null&&!con.isClosed()){
		 		con.close();
		 	}
		 	if(ps!=null){
		 		ps.close();
		 	}
		 	if(rs!=null){
		 		rs.close();
		 	}

如图: 

     

 四.修改:

第一个思路是和阅读一样的:先根据nid获取其内容

然后在进行修改。

但不过这里修改下拉框的值要注意:有if哪里要接else否则将不能修改

<!-- 如何让下拉框默认选中 -->
<!--             <option value="11" selected="selected">ss</option>

    //接收从主页面admin.jsp传递过来的nid
        String nid=request.getParameter("nid");
		//两个字符串
		String URL="jdbc:oracle:thin:@localhost:1521:orcl";
		String CNAME="oracle.jdbc.driver.OracleDriver";
		//加载驱动
		Class.forName(CNAME);
		//创建连接
		Connection con=DriverManager.getConnection(URL, "scott", "tiger");
		//定义SQL语句
		String sql="select * from news279 where nid="+nid;
		//获得执行对象
		PreparedStatement ps=con.prepareStatement(sql);
		//获得结果集
		ResultSet rs=ps.executeQuery();
		//扩大作用域
		int tid=0;//主题编号
		String ntitle="";//标题
		String nauthor="";//作者
		String nsummary="";//摘要
		String ncontent="";//内容
		//遍历结果集
		if(rs.next()){
			tid=rs.getInt(2);
			ntitle=rs.getString(3);
			nauthor=rs.getString(4);
			ncontent=rs.getString(6);
			nsummary=rs.getString(5);
			
		}
		//该条新闻
		//System.out.print(tid);

%>

         <%
		    //定义SQL语句
		     sql="select *from topic279 order by tid ";
		    //获得执行对象
		    ps=con.prepareStatement(sql);
		    //获得结果集
		    rs=ps.executeQuery();
		    //遍历结果集
		    while(rs.next()){
		    	//如果是当前这条新闻的主题编号的话就让其选中
		    	if(rs.getInt(1)==tid){
			    	out.print(" <option selected='selected' value='"+rs.getInt(1)+"'>"+rs.getString(2)+"</option>");
	
		    	}else{//否则 不选中 为了能够修改
			    	out.print(" <option value='"+rs.getInt(1)+"'>"+rs.getString(2)+"</option>");

		    	}
         
		    }
		    //关闭资源
			if(con!=null&&!con.isClosed()){
		 		con.close();
		 	}
		 	if(ps!=null){
		 		ps.close();
		 	}
		 	if(rs!=null){
		 		rs.close();
		 	}
		    

这里传参用的是:<!-- 隐藏域传值 会随着表单的提交而提交 后期根据name值取value值 -->
      <input name="nid" type="hidden" value="<%=nid %>"> 

当点击提交时回执行以下代码:

 

//设置编码方式
<%
		request.setCharacterEncoding("utf-8");
		//接收表单的值 根据name取value值 
		String nid=request.getParameter("nid");//没传值
		String ntid=request.getParameter("ntid");
		String ntitle=request.getParameter("ntitle");
		String nauthor=request.getParameter("nauthor");
		String nsummary=request.getParameter("nsummary");
		String ncontent=request.getParameter("ncontent");
		String naddtime=new Date().toLocaleString();//系统当前时间 
		
		//两个字符串
		String URL="jdbc:oracle:thin:@localhost:1521:orcl";
		String CNAME="oracle.jdbc.driver.OracleDriver";
	 	//加载驱动
	 	Class.forName(CNAME);
	 	//创建连接
	 	Connection con=DriverManager.getConnection(URL, "scott", "tiger");
	 	//定义sql语句
	 	String sql="update news279 set tid=?,ntitle=?,nauthor=?,nsummary=?,ncontent=?,naddtime=? where nid=?";

	 	//获得执行对象
	 	PreparedStatement ps=con.prepareStatement(sql);
		
		//给占位符赋值 7个
	
		ps.setInt(1, Integer.parseInt(ntid));//String-->int
		ps.setString(2, ntitle);
		ps.setString(3, nauthor);
		ps.setString(4, nsummary);
		ps.setString(5, ncontent);
		ps.setString(6, naddtime);
		ps.setInt(7, Integer.parseInt(nid));
		//开始执行
		int n=ps.executeUpdate();//影响行数
		
		//关闭资源
		if(con!=null&&!con.isClosed()){
	 		con.close();
	 	}
	 	if(ps!=null){
	 		ps.close();
	 	}
	 	
		
		//判断
		if(n>0){
			//修改成功
			response.sendRedirect("/q4/news/admin.jsp");
		}
		else{
			//修改失败
			out.print("<script>alert('修改失败');location.href='update.jsp?nid="+nid+"';</script>");
		}
		

注意修改失败时候要修改页面并返回nid否则拿不到值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值