连接Oracle数据库-对新闻的数据维护(增删)

一、将登录页面连接上数据库,登陆成功将进行页面转跳

JDBC步骤:

                1.注册驱动类

                2.连接数据库

                3.定义对象,用来执行sql语句

                4.给占位符赋值

                5.执行sql语句

                6.处理结果集

                7.关闭连接

代码如下:

<%
	//接收登录页面传递的用户名和密码
	String buser=request.getParameter("textfield");
	String bpwd=request.getParameter("textfield2");
	//JDBC
	Class.forName("oracle.jdbc.OracleDriver");
	String url="jdbc:oracle:thin:@localhost:1521:T277";
	Connection con=DriverManager.getConnection(url, "scott", "tiger");
	PreparedStatement ps=con.prepareStatement("select*from BGS where buser=? and bpwd=?");
	ps.setString(1,buser);
	ps.setString(2, bpwd);
	ResultSet rs=ps.executeQuery();
	if(rs.next()){
		request.getRequestDispatcher("admin.jsp").forward(request, response);
	}else{
		out.print("<script>alert('用户名或密码错误,请重新输入');location.href='login.jsp'</script>");
	}
%>

二、转跳页面后,要将数据库中的数据添加到页面上,所有我们又需要连接数据库

代码如下:

    <%
		//连接数据库,查询新闻信息
		Class.forName("oracle.jdbc.OracleDriver");
		String url="jdbc:oracle:thin:@localhost:1521:T277";
		Connection con=DriverManager.getConnection(url, "scott", "tiger");
		PreparedStatement ps=con.prepareStatement("select * from news");
		ResultSet rs=ps.executeQuery();
		while(rs.next()){
					
	%>
		<li><%=rs.getString("ntile")%> <span> 作者:<%=rs.getString("nzz")%>
				&#160;&#160;&#160;&#160; <a href='#'>修改</a>
				&#160;&#160;&#160;&#160; <a href='#' onclick='return clickdel()'>删除</a>
		</span>
		</li>
		<li class='space'></li>

		<%} %>

为什么while循环的大括号为什么要这么写?

因为中间的那串代码是我们要循环的代码,也就是循环体,使用我们要用<%%>把括号写到最后。

页面效果如下:


 登录完成,数据也添加到了页面,接下来就是对数据的维护了(也就是对数据的增删改查)


三、添加新闻数据

代码如下:

  request.setCharacterEncoding("utf-8");
	//接收添加页面的编号
	//新闻主题编号
	int tid=Integer.valueOf(request.getParameter("ntid"));
	//新闻标题
	String ntitle=request.getParameter("ntitle");
	//新闻作者
	String nzz=request.getParameter("nauthor");
	//新闻内容
	String nnr=request.getParameter("ncontent");
	//新闻摘要
	String nzy=request.getParameter("nsummary");
	
    String url = "jdbc:oracle:thin:@localhost:1521:T277";
  	Class.forName("oracle.jdbc.OracleDriver");
  	Connection con=DriverManager.getConnection(url, "scott", "tiger");
  	//获取新闻下一个编号
  	PreparedStatement ps=con.prepareStatement("select max(nid) from news");
  	int nextNid=1;
  	ResultSet rs=ps.executeQuery();
  	if(rs.next()){
  		nextNid=rs.getInt(1)+1;
  	}
  	//添加新闻
    ps=con.prepareStatement("insert into news values(?,?,?,?,?,sysdate,0,?)");
	ps.setInt(1,nextNid);
	ps.setInt(2, tid);
	ps.setString(3, ntitle);
	ps.setString(4, nzz);
	ps.setString(5, nnr);
	ps.setString(6, nzy);
	//执行sql语句
	int i=ps.executeUpdate();
	if(i>0){
		out.print("<script>alert('添加成功');location.href='../admin.jsp'</script>");
	}else{
		out.print("<script>alert('添加失败');location.href='add_news.jsp'</script>");
	}
	
%>

当你的网页页面出现乱码是可使用这句代码:request.setCharacterEncoding("utf-8");

这段代码是获取新闻下一个编号,因为我们在表中是设置了主键自增,在代码中不能自增,所以我们需要求出下一个编号是什么

int nextNid=1;
  	ResultSet rs=ps.executeQuery();
  	if(rs.next()){
  		nextNid=rs.getInt(1)+1;
  	}

四、删除新闻数据

不管我们删除成功与否,我们都是在admin页面;../的意思是回退一级,以为我的两个页面不在同一个文件中,所以我需要用到../。

<%
	//接收要删除的新闻编号
	String id=request.getParameter("nid");
	int nid=Integer.valueOf(id);
	String url = "jdbc:oracle:thin:@localhost:1521:T277";
	Class.forName("oracle.jdbc.OracleDriver");
	Connection con=DriverManager.getConnection(url, "scott", "tiger");
	PreparedStatement ps=con.prepareStatement("delete news where nid="+nid);
	int i=ps.executeUpdate();
	if(i>0){
		out.print("<script>alert('删除成功');location.href='../admin.jsp'</script>");		
	}else{
		out.print("<script>alert('删除失败');location.href='../admin.jsp'</script>");
	}
%>

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值