2005-11-21课堂练习题目

课堂练习: 本次练习做一个简单的成绩查询,具体的数据库结构看“数据结构.xls”文件。 一、登录查询页面(default.aspx) 1、利用“学号”和“姓名”两个值,对数据库表test_name 进行查询,如果得到一条记录(也只能是一条记录),则转向queryresult.aspx页面,并且把字段ID和Name这两个值传到该页面。如果没有,则提示“该学生不存在,请仔细检查后再查询!” 2、技术难点: 如何转向queryresult.aspx并且带参数? 假设要带的参数值为:“1”和“李小明”,则在后台代码中写: Response.Redirect("queryresult.aspx?id=1&xm=李小明"); 则代码执行到该语句时,页面就会转到 queryresult.aspx。 二、查询结果页面(queryresult.aspx) 1、利用传过来的ID(注意该ID是test_name表中的ID),在test_Grade表中查询该学生的成绩,并显示出来。查询结果有:课程名称和成绩(具体见图2) 2、因为test_grade表中只有“subjuctid”字段而没有课程名称,所以在写查询语句是要做一个等值连接,连接到test_subject。 3、技术难点: 如何获得上一页传过来的参数? 比如本练习中,前一页(default.aspx)传过来两个参数ID和XM,则在后面代码中利用: Request.QueryString["id"] 获得id参数值 Request.QueryString["xm"] 获得xm参数值 (注意:要转换成相应的数据类型) 具体实现代码: 1、default.aspx中的查询按钮代码: string constr = "server=localhost;database=ylj11;uid=sa;pwd=123456"; SqlConnection mycon=new SqlConnection(constr); string querystr="select * from test_name where name=@xm and test_no=@xh"; SqlCommand mycommand=new SqlCommand(querystr,mycon); mycommand.Parameters.Add("@xm",SqlDbType.VarChar,10); mycommand.Parameters.Add("@xh",SqlDbType.VarChar,50); mycommand.Parameters["@xm"].Value=this.txtxm.Text.Trim(); mycommand.Parameters["@xh"].Value=this.txtxh.Text.Trim(); SqlDataReader myreader; mycon.Open(); try { myreader=mycommand.ExecuteReader(); if(myreader.Read()) { Response.Redirect("queryresult.aspx?id="+myreader["id"].ToString()+"&xm="+myreader["name"].ToString()); } else { this.message.Text="该学生不存在,请仔细检查后再查询!"; } } catch(SqlException e1) { Response.Write(e1.Message); } finally { mycon.Close(); } 2、queryresult.aspx中的关键代码 int id=Convert.ToInt32(Request.QueryString["id"]); string constr = "server=localhost;database=ylj11;uid=sa;pwd=123456"; SqlConnection mycon=new SqlConnection(constr); string querystr="SELECT test_grade.grade, test_name.name, test_subject.test_subject FROM test_grade INNER JOIN test_subject ON test_subject.id = test_grade.subjectid INNER JOIN test_name ON test_name.id = test_grade.nameid where test_name.id=@id"; SqlCommand mycommand=new SqlCommand(querystr,mycon); mycommand.Parameters.Add("@id",SqlDbType.Int); mycommand.Parameters["@id"].Value=id; this.labxm.Text="姓名:"+Request.QueryString["xm"].ToString(); mycon.Open(); try { SqlDataReader myreader=mycommand.ExecuteReader(); this.DataGrid1.DataSource=myreader; this.DataBind(); myreader.Close(); } catch(SqlException e1) { Response.Write(e1.Message); } finally { mycon.Close(); }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值