首页 > 开发 > 综合 > 正文

C#网络应用编程基础练习题与答案(八)

2024-07-21 02:28:21
字体:
来源:转载
供稿:网友
国内最大的酷站演示中心!

  1. 使用保持连接的方式编写程序,计算各年级平均成绩,并显示结果。

  【解答】

  using system;
  using system.collections.generic;
  using system.componentmodel;
  using system.data;
  using system.drawing;
  using system.text;
  using system.windows.forms;
  using system.data.sqlclient;
  namespace 习题8_6_1
  {
  public partial class form1 : form
  {
  public form1()
  {
  initializecomponent();
  }
  //添加button按钮在listbox中显示结果
  private void button1_click(object sender, eventargs e)
  {
  listbox1.items.add("年级 平均成绩");
  string connectionstring = properties.settings.default.mydatabaseconnectionstring;
  //根据连接字符串创建sqlconnection实例
  sqlconnection conn = new sqlconnection(connectionstring);
  //创建sqlcommand实例,并设置sql语句和使用的连接实例
  sqlcommand cmd = new sqlcommand();
  cmd.commandtext = "select substring(学号,1,2) as 年级,avg(成绩) as 平均成绩 from mytable2 group by substring(学号,1,2)";
  cmd.connection = conn;
  try
  {
  conn.open();
  sqldatareader r = cmd.executereader();
  while (r.read() == true)
  {
  listbox1.items.add(string.format("{0}级 {1}", r[0], r[1]));
  }
  r.close();
  }
  catch (exception err)
  {
  messagebox.show(err.message, "计算成绩失败");
  }
  finally
  {
  conn.close();
  }
  }
  }
  }

  2. 使用保持连接的方式编写程序,查询mytable2中不及格学生的学号,姓名,性别,成绩。并将结果在listbox中显示出来。

  【解答】

  using system;
  using system.collections.generic;
  using system.componentmodel;
  using system.data;
  using system.drawing;
  using system.text;
  using system.windows.forms;
  using system.data.sqlclient;
  namespace 习题8_6_2
  {
  public partial class form1 : form
  {
  public form1()
  {
  initializecomponent();
  }
  private void button1_click(object sender, eventargs e)
  {
  listbox1.items.add(" 学号 姓名 性别 成绩");
  string connectionstring = properties.settings.default.mydatabaseconnectionstring;
  //根据连接字符串创建sqlconnection实例
  sqlconnection conn = new sqlconnection(connectionstring);
  //创建sqlcommand实例,并设置sql语句和使用的连接实例
  sqlcommand cmd = new sqlcommand();
  cmd.commandtext =
  "select 学号,姓名,性别, 成绩 from mytable2 where (成绩<60)";
  cmd.connection = conn;
  try
  {
  conn.open();
  sqldatareader r = cmd.executereader();
  while (r.read() == true)
  {
  listbox1.items.add( string.format("{0} {1} {2} {3}", r[0], r[1], r[2], r[3]));
  }
  r.close();
  }
  catch (exception err)
  {
  messagebox.show(err.message, "查询成绩失败");
  }
  finally
  {
  conn.close();
  }
  }
  }
  }

  3. 编写程序,以“[编码]名称”的样式在combobox1中显示mytable1的内容。

  【解答】

  using system;
  using system.collections.generic;
  using system.componentmodel;
  using system.data;
  using system.drawing;
  using system.text;
  using system.windows.forms;
  using system.data.sqlclient;
  namespace 习题8_6_3
  {
  public partial class form1 : form
  {
  public form1()
  {
  initializecomponent();
  }
  private void form1_load(object sender, eventargs e)
  {
  string connectionstring = properties.settings.default.mydatabaseconnectionstring;
  //根据连接字符串创建sqlconnection实例
  sqlconnection conn = new sqlconnection(connectionstring);
  //创建sqlcommand实例,并设置sql语句和使用的连接实例
  sqlcommand cmd = new sqlcommand();
  cmd.commandtext = "select * from mytable1";
  cmd.connection = conn;
  try
  {
  conn.open();
  sqldatareader r = cmd.executereader();
  while (r.read() == true)
  {
  combobox1.items.add(string.format("[{0}] {1}", r[0], r[1]));
  }
  combobox1.selectedindex = 0;
  r.close();
  }
  catch (exception err)
  {
  messagebox.show(err.message, "显示数据失败");
  }
  finally
  {
  conn.close();
  }
  }
  }
  }

  4. 在画线处填上合适的内容,使程序变得正确完整。

  string connstring="server=localhost;integrated security=sspi;database=pubs";
  sqlconnection conn=____________________________
  string strsql="select * from mytable2";
  sqldataadapter adapter=new sqldataadapter(_____________);
  dataset=new dataset();
  adapter.fill(________________,"mytable2");
  this.datagridview1.datasource=dataset.tables["mytable2"];

  【解答】

  string connstring="server=localhost;integrated security=sspi;database=pubs";
  sqlconnection conn= new sqlconnection(properties.settings.default.mydatabaseconnectionstring);
  string strsql="select * from mytable2";
  sqldataadapter adapter=new sqldataadapter(conn);
  dataset=new dataset();
  adapter.fill(dataset,"mytable2");
  this.datagridview1.datasource=dataset.tables["mytable2"];

  5. 已知数据库中定义了一张person表,表的数据结构如下:

  字段名称字段类型字段含义

  id数字编号

  xm文本姓名

  xb文本性别

  nl数字年龄

  zip文本邮政编码

  用编写代码的方法在datagridview中显示该数据表中年龄大于18的所有纪录,显示时以编号的升序排序,要求禁止用户编辑数据。

  【解答】

  using system;
  using system.collections.generic;
  using system.componentmodel;
  using system.data;
  using system.drawing;
  using system.text;
  using system.windows.forms;
  using system.data.sqlclient;
  namespace 习题8_6_5
  {
  public partial class form1 : form
  {
  public form1()
  {
  initializecomponent();
  }
  private void button1_click(object sender, eventargs e)
  {
  string connectionstring = properties.settings.default.mydatabaseconnectionstring ;
  sqlconnection conn = new sqlconnection(connectionstring);
  try
  {
  conn.open();
  sqldataadapter adapter = new sqldataadapter(
  "select id,xm,xb,nl from person where nl > 18 order by id", conn);
  dataset dataset = new dataset();
  //如果不指定表名,则系统自动生成一个默认的表名
  adapter.fill(dataset, "person");
  //可以使用索引引用生成的表
  datagridview1.datasource = dataset.tables["person"];
  adapter.dispose();
  }
  catch (exception err)
  {
  messagebox.show(err.message);
  }
  finally
  {
  conn.close();
  }
  }
  private void form1_load(object sender, eventargs e)
  {
  //不允许用户直接在最下面的行添加新行
  datagridview1.allowusertoaddrows = false;
  //不允许用户直接按delete键删除行
  datagridview1.allowusertodeleterows = false;
  }
  }
  }

  6.例8-18的存储过程定义中,将“@surname nvarchar(2),”改为“@surname nchar(2),”,是否仍然能够得到正确结果,为什么?

  【解答】

  不一定。因为如果传递的参数值为“王”,在存储过程中会自动变为“王 ”。

  7. 调用存储过程,设计程序完成下列功能:任意给出一个汉字,统计mytable2中所有包含该汉字的人数,并显示统计结果。

  【解答】

  using system;
  using system.collections.generic;
  using system.componentmodel;
  using system.data;
  using system.drawing;
  using system.text;
  using system.windows.forms;
  using system.data.sqlclient;
  namespace 习题8_6_7
  {
  public partial class form1 : form
  {
  public form1()
  {
  initializecomponent();
  }
  private void button1_click(object sender, eventargs e)
  {
  sqlconnection conn =
  new sqlconnection(properties.settings.default.mydatabaseconnectionstring);
  sqlcommand cmd = new sqlcommand();
  cmd.connection = conn;
  //设置sql语句为存储过程名,命令类型为存储过程
  cmd.commandtext = "selectfilterstudentsnum";
  cmd.commandtype = commandtype.storedprocedure;
  //添加存储过程中参数需要的初始值,注意参数名要和存储过程定义的参数名相同
  if( textbox1.text=="")
  {
  messagebox.show("请输入有效信息","错误");
  textbox1.focus();
  return ;
  }
  cmd.parameters.addwithvalue("@surname", textbox1.text);
  cmd.parameters.addwithvalue("@record", 0);
  //指定哪些参数需要返回结果
  cmd.parameters["@record"].direction = parameterdirection.output;
  try
  {
  conn.open();
  //执行存储过程
  cmd.executenonquery();
  //显示返回的结果
  messagebox.show(string.format("有{0}条含 {1} 的记录",
  cmd.parameters["@record"].value,textbox1.text));
  }
  catch (exception err)
  {
  messagebox.show(err.message);
  }
  finally
  {
  conn.close();
  }
  }
  }
  }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表