📄 第九次课数据库2.txt
字号:
<BODY>
<%! int pageSize=3; //每页显示的记录数。
int pageCount=0; //分页后的总页数。
%>
<% Connection con;
Statement sql;
ResultSet rs;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){out.print(e);}
try { con=DriverManager.getConnection("jdbc:odbc:moon","sa","");
sql=
con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//返回可滚动的结果集:
rs=sql.executeQuery("SELECT * FROM student");
//将游标移动到最后一行:
rs.last();
//获取最后一行的行号:
int lastRow=rs.getRow();
//计算分页后的总页数:
pageCount=(lastRow%pageSize==0)?(lastRow/pageSize):(lastRow/pageSize+1);
//当前显示的初始页数:
int showPage=1;
//告知客户总页数:
%>
<P> 共有<%=pageCount%>页
<BR>每页显示<%=pageSize%>条记录.
<%-- 客户通过表单提交欲要显示的页码数--%>
<FORM action="" method=get >
输入页码数<Input Type=text name=showPage size=4 >
<Input Type=submit name=g value=提交>
</FORM>
<% //获取客户想要显示的页数:
String integer=request.getParameter("showPage");
if(integer==null)
{ integer="1";
}
try {showPage=Integer.parseInt(integer);
}
catch(NumberFormatException e)
{showPage=1;
}
if(showPage<=1)
{showPage=1;
}
if(showPage>=pageCount)
{showPage=pageCount;
}
%>
<BR>目前显示第<%=showPage%>页
<% //如果要显示第showPage页,那么游标应移到posion的值是:
int posion=(showPage-1)*pageSize+1;
rs.absolute(posion); // 设置游标的位置
out.print("<Table Border>");
out.print("<TR>");
out.print("<TH width=100>"+"学号");
out.print("<TH width=100>"+"姓名");
out.print("<TH width=50>"+"数学成绩");
out.print("<TH width=50>"+"英语成绩");
out.print("<TH width=50>"+"物理成绩");
out.print("</TR>");
for (int i=1;i<=pageSize&&(!rs.isAfterLast());i++)
{ out.print("<TR>");
out.print("<TD >"+rs.getString(1)+"</TD>");
out.print("<TD >"+rs.getString(2)+"</TD>");
out.print("<TD >"+rs.getInt("数学成绩")+"</TD>");
out.print("<TD >"+rs.getInt("英语成绩")+"</TD>");
out.print("<TD >"+rs.getInt("物理成绩")+"</TD>");
out.print("</TR>") ;
rs.next();
}
out.print("</Table>");
con.close();
}
catch(SQLException e1) {out.print(e1);}
%>
</BODY>
</HTML>
例子12(Ex7_12.jsp)
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY>
<% Connection con;
Statement sql;
ResultSet rs;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){out.print(e);}
try { con=DriverManager.getConnection("jdbc:odbc:cjb","","");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM 成绩表");
out.print("<Table Border>");
out.print("<TR>");
out.print("<TH width=100>"+"学号");
out.print("<TH width=50>"+"姓名");
out.print("<TH width=50>"+"数学成绩");
out.print("<TH width=50>"+"英语成绩");
out.print("</TR>");
while(rs.next())
{ out.print("<TR>");
int name=rs.getInt(1);
out.print("<TD >"+name+"</TD>");
String unit=rs.getString(2);
out.print("<TD >"+unit+"</TD>");
int unitprice=rs.getInt(3);
out.print("<TD >"+unitprice+"</TD>");
int unitprice2=rs.getInt(4);
out.print("<TD >"+unitprice2+"</TD>");
out.print("</TR>") ;
}
out.print("</Table>");
con.close();
}
catch(SQLException e1) {out.print(e1);}
%>
</BODY>
</HTML>
例子13(见Ex7_13.jsp)
Example5_13.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY>
<%! //声明一个共享的连接对象:
Connection con=null;
%>
<% Statement sql=null;
ResultSet rs=null;
//第一个客户负责建立连接对象:
if(con==null)
{ try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e)
{out.print(e);
}
try {con=DriverManager.getConnection("jdbc:odbc:moon","sa","");
sql=con.createStatement();
rs =sql.executeQuery("SELECT * FROM student");
out.print("i am first");
}
catch(SQLException e)
{out.print(e);
}
}
//其它客户通过同步块使用这个连接:
else
{ synchronized(con)
{ try { sql=con.createStatement();
rs =sql.executeQuery("SELECT * FROM student");
out.print("i am not first");
}
catch(SQLException e)
{out.print(e);
}
}
}
try
{ out.print("<Table Border>");
out.print("<TR>");
out.print("<TH width=100>"+"学号");
out.print("<TH width=100>"+"姓名");
out.print("<TH width=50>"+"数学成绩");
out.print("<TH width=50>"+"英语成绩");
out.print("<TH width=50>"+"物理成绩");
out.print("</TR>");
while(rs.next())
{ out.print("<TR>");
String number=rs.getString(1);
out.print("<TD >"+number+"</TD>");
String name=rs.getString(2);
out.print("<TD >"+name+"</TD>");
int math=rs.getInt("数学成绩");
out.print("<TD >"+math+"</TD>");
int english=rs.getInt("英语成绩");
out.print("<TD >"+english+"</TD>");
int physics=rs.getInt("物理成绩");
out.print("<TD >"+physics+"</TD>");
out.print("</TR>") ;
}
out.print("</Table>");
}
catch(SQLException e1) {}
%>
</BODY>
</HTML>
见Ex7_14.jsp(和startvote.jsp)
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY>
<% StringBuffer nameList=new StringBuffer();
Connection con;
Statement sql;
ResultSet rs;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
try{ con=DriverManager.getConnection("jdbc:odbc:vote","","");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM people");
nameList.append("<FORM action=startvote.jsp Method=post>");
nameList.append("<Table Border>");
nameList.append("<TR>");
nameList.append("<TH width=150>"+"投票选择");
nameList.append("</TR>");
while(rs.next())
{ nameList.append("<TR>");
String name=rs.getString(1);
String s="<Input type=radio name=name value="+name+" >"+name;
nameList.append("<TD >"+s+"</TD>");
nameList.append("</TR>") ;
}
nameList.append("</Table>");
nameList.append("<Input Type=submit value=提交>");
nameList.append("</FORM ");
con.close();
out.print(nameList);
}
catch(SQLException e1) {}
%>
</BODY>
</HTML>
startvote.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<html>
<body>
<%! //记录总票数的变量:
int total=0;
//操作总票数的同步方法:
synchronized void countTotal()
{ total++;
}
%>
<% boolean vote=true;//决定用户是否有权投票的变量。
//得到被选择的候选人名字:
String name="";
name=request.getParameter("name");
if(name==null)
{name="?";
}
byte a[]=name.getBytes("ISO-8859-1");
name =new String(a);
//得到投票人的IP地址:
String IP=(String)request.getRemoteAddr();
//加载桥接器:
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
Connection con=null;
Statement sql=null;
ResultSet rs=null;
//首先查询IP表,判断该用户的IP地址是否已经投过票:
try { con=DriverManager.getConnection("jdbc:odbc:vote","","");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM IP WHERE IP = "+"'"+IP+"'");
int row=0;
while(rs.next())
{ row++;
}
if(row>=1)
{ vote=false; //不允许投票。
}
}
catch(SQLException e)
{ }
if(name.equals("?"))
{ out.print("您没有投票,没有权利看选举结果");
}
else
{
if(vote)
{ out.print("您投了一票");
//将总票数加1:
countTotal();
//通过连接数据库,给该候选人增加一票,
//同时将自己的IP地址写入数据库 。
try
{ rs=sql.executeQuery("SELECT * FROM people WHERE name = "+"'"+name+"'");
rs.next();
int count=rs.getInt("count");
count++;
String condition=
"UPDATE people SET count = "+count+" WHERE name="+"'"+name+"'" ;
//执行更新操作(投票计数):
sql.executeUpdate(condition);
//将IP地址写入IP表:
String to=
"INSERT INTO IP VALUES"+"("+"'"+IP+"'"+")";
sql.executeUpdate(to);
}
catch(SQLException e)
{ out.print(""+e);
}
//显示投票后的表中的记录:
try{ rs=sql.executeQuery("SELECT * FROM people");
out.print("<Table Border>");
out.print("<TR>");
out.print("<TH width=100>"+"姓名");
out.print("<TH width=50>"+"得票数");
out.print("<TH width=50>"+"总票数:"+total);
out.print("</TR>");
while(rs.next())
{ out.print("<TR>");
out.print("<TD >"+rs.getString(1)+"</TD>");
int count=rs.getInt("count");
out.print("<TD >"+count+"</TD>");
double b=(count*100)/total; //得票的百分比。
out.print("<TD >"+b+"%"+"</TD>");
out.print("</TR>") ;
}
out.print("</Table>");
con.close();
}
catch(SQLException e)
{ }
}
else
{out.print("您已经投过票了");
}
}
%>
</BODY>
</HTML>
Ex7_15.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY BGcolor=yellow>
<CENTER>
<FONT SIZE=2>
<P>成绩录入查询系统
<BR>
<BR><A HREF="login.jsp">录入人员登录</A>
<BR><A HREF="inputMessage.jsp">录入学生的基本信息</A>
<BR><A HREF="inputResult.jsp">录入学生成绩</A>
<BR><A HREF="modifySecret.jsp">修改密码</A>
<BR><A HREF="inquire.jsp">查询成绩</A>
</FONT>
</CENTER>
</BODY>
</HTML>
登录页面(效果如图5.44所示)
login.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY bgcolor=pink ><Font size=1>
<P>成绩输入人员登录
<FORM action="login.jsp" Method="post">
<BR>输入帐号:
<BR><Input type=text name="account">
<BR>输入密码:
<BR><Input type=password name="secret">
<BR><Input type=submit name="g" value="提交">
</FORM>
<% //获取提交的帐号:
String account=request.getParameter("account");
if(account==null)
{account="";
}
byte b[]=account.getBytes("ISO-8859-1");
account=new String(b);
//获取提交的密码:
String secret=request.getParameter("secret");
if(secret==null)
{secret="";
}
byte c[]=secret.getBytes("ISO-8859-1");
secret=new String(c);
//查询数据库信息,验证身份:
Connection con=null;
Statement sql=null;
ResultSet rs=null;
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException event){}
try
{con=DriverManager.getConnection("jdbc:odbc:manage","","");
sql=con.createStatement();
String condition="SELECT * FROM verify WHERE 帐号 = "+"'"+account+"'";
rs =sql.executeQuery(condition);
while(rs.next())
{ String n=rs.getString("帐号");
String s=rs.getString("密码");
if(account.equals(n)&&secret.equals(s))
{ //将帐号和密码存入session对象,以备在输入界面:inputMessage.jsp中使用:
session.setAttribute("account",account);
session.setAttribute("secret",secret);
//为了防止客户浏览器限制了Cooker的使用,需对连接进行重定向处理:
String s1=response.encodeRedirectURL("inputMessage.jsp");
String s2=response.encodeRedirectURL("inputResult.jsp");
//连接到基本信息输入页面:
response.sendRedirect(s1);
}
}
if(!(session.isNew()))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -