应用系统中通用组合查询功能的实现方法

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:zzfivy
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:组合查询功能在信息系统软件中应用较广,在运行中使用者可以根据自己的查询需要从下拉列表框中选择要查询的项目,将多个条件通过关系运算符进行连接,从而实现多个条件的组合查询。查询条件可任意组合,查询结果显示在GridView控件中。该文结合自己的开发体会,介绍组合查询功能在系统中的实现方法。
  关键词:ASP.NET;组合查询;代码实现
  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)20-0007-03
  一个完善的应用系统程序中,查询功能是其重要的组成部分,灵活的查询方法、不同的查询需求是使用者对系统提出的更高的要求,如果只能满足固定条件和固定内容的查询,会限制系统使用的灵活性。如果能让使用者自己选择查询条件,筛选查看的项目,就能够完善我们的查询功能。
  在设计毕业生就业管理信息系统的过程中,我们就开发了通用的查询功能模块,为了满足对毕业生不同信息的查询需要,在系统中我们定义了不同查询条件的选择方式,而且还可以灵活地使用多个条件的组合查询,支持查询内容的模糊查询,可以实时地查看所形成的查询语句,最后将查询结果用数据表的形式输出显示。
  虽然系统是基于asp.net技术开发的,但基本的方法和设计思路对使用其他语言开发仍然具有一定的指导作用。
  下面以系统中的毕业生信息查询为例来介绍实现的方法和设计思路。
  1 页面的设计
  系统采用的是Web页面的实现方式,在页面中添加了实现选择"查询字段"和"算术运算符"的下拉列表框控件,然后再添加一个单行文本框用来输入查询要比较的参考值,这样就可以实现一个查询条件的定义。再添加一个选择下拉列表框,用于实现组合条件逻辑运算的选择,其中包含逻辑与运算和逻辑或运算的选择。
  最后再添加三个命令按钮,分别实现:执行最终结果的查询、重新选择新的查询条件、结束查询。
  为了便于查看实现的SELECT查询命令,我们可以添加一个多行文本框,将选择过程中的命令显示在多行文本框中。
  在下方添加一个GridView控件,用来显示组合查询的结果。
  其中包含的控件类型及ID依次为:
  包含查询字段的下拉列表框(field_name)、包含关系运算符的下拉列表框(operate)、输入查询值的文本框(query_value)、选择逻辑运算符的下拉列表框(logic_operate)、执行查询命令按钮控件(search)、重新选择命令按钮控件(again)、结束命令按钮控件(btn_ret)、选择命令结果显示文本框(command_display)、查选结果显示在数据控件(result)。
  2 执行查询过程
  1)查询下拉列表框中绑定的是可以使用查询的全部字段,可以从中选择要查询的项目名称;
  2)从关系下拉列表框选择要执行的操作运算符,其中包含模糊查询的运算符;
  3)在输入查询值的文本框中输入要查询的值,回车确认,此时形成的SELECT命令就会显示在命令结果显示文本框中;
  4)如果继续选择其他条件,单击选择逻辑运算符的下拉列表框,从中选择逻辑与或者逻辑或运算;如果不再选择其他查询条件,可以直接点击执行查询命令按钮;
  5)若继续选择,则重复前面的操作;若选择执行查询,则查询结果会显示在GridView控件中。
  3 设计过程说明
  3.1 绑定要查询的字段名
  将需要查询数据表:student_employee的字段名绑定到查询字段的下拉列表框控件(field_name)上 ,为了便于用户理解字段名称的含义,可以先建立一个数据字典的表,包含查询数据表中的字段名和对应的中文解释。在没有选择要查询的字段之前,关系运算符的下拉列表框、输入查询值的文本框、逻辑运算符的下拉列表框、执行查询命令按钮的状态都是不可使用的,可以将它们的Enabled属性都为假值。
  protected void Page_Load(object sender, EventArgs e)
  {
  if (!IsPostBack)
  { SqlConnection cn = new SqlConnection(“server=.;database=employee;uid=sa;pwd=”);
  cn.Open();
  DataTable dt = new DataTable();
  string sql = "SELECT Name FROM SysColumns WHERE id=Object_Id(’student_employee’)";
  SqlDataAdapter da = new SqlDataAdapter(sql, cn);
  da.Fill(dt);
  field_name.DataValueField = "Name";
  field_name.DataTextField = "Name";
  field_name.DataSource = dt;
  field_name.DataBind();
  field_name.Items.Add("選择字段...");
  field_name.SelectedIndex = field_name.Items.Count - 1;
  field_name.Enabled = true;
  operate.Enabled = false;
  query_value.Enabled = false;   logic_operate.Enabled = false;
  search.Enabled = false;
  command_display.Text = select_command;
  }
  }
  3.2 选择查询的字段名
  对于形成的查询命令结果可以使用一个变量保存,在查询开始之前,对该变量进行基本的初始化赋值,形成查询命令的基本框架:
  static string select_command = "select * from student_employee_info where (";
  把从字段列表框中选择查询的字段名添加到命令变量中(要先将下拉列表框的AutoPostBack属性设成True):
  protected void field_name_SelectedIndexChanged(object sender, EventArgs e)
  {
  select_command = select_command field_name.SelectedValue " ";
  field_name.Enabled = false;
  operate.Enabled = true;
  operate.Focus();
  operate.SelectedIndex = operate.Items.Count - 1;
  command_display.Text = select_command;
  }
  3.3 选择运算符
  选择字段名后,关系运算符列表框就可以选择操作了,从中选中某个运算符之后,就可以在文本框中输入要查询的数据值了:
  protected void operate_SelectedIndexChanged(object sender, EventArgs e)
  {
  string str;
  field_name.Enabled = false;
  operate.Enabled = false;
  query_value.Enabled = true;
  query_value.Focus();
  query_value.Text="";
  str = operate.SelectedValue;
  switch (str)
  {
  case "=":
  {
  select_command = select_command operate.SelectedValue "’";
  break;
  }
  case "!=":
  {
  select_command = select_command operate.SelectedValue "’";
  break;
  }
  default:
  {
  select_command = select_command " like ’%";
  break;
  }
  }
  command_display.Text = select_command;
  }
  3.4 输入要查询的值
  在文本框中输入要查询的字段值,直接回车,逻辑运算选择框控件可用:
  protected void query_value_TextChanged(object sender, EventArgs e)
  { logic_operate.SelectedIndex = logic_operate.Items.Count - 1;
  field_name.Enabled = false;
  operate.Enabled = false;
  query_value.Enabled = false;
  logic_operate.Enabled = true;
  search.Enabled = true;
  if(operate.SelectedValue=="like")
  select_command = select_command query_value.Text "%’) ";
  else
  select_command = select_command query_value.Text "’) ";
  command_display.Text = select_command;
  logic_operate.Focus();
  }
  3.5 選择逻辑运算符
  以上操作过程完成了一个查询条件的定义,如果还需要添加其他条件,可以从逻辑运算符中选择“与”或者“或”运算,然后重复执行2,继续添加其他的条件;如果不希望添加其他条件则直接按“执行查询”命令按钮,运行查询命令。
  protected void logic_operate_SelectedIndexChanged(object sender, EventArgs e)
  {
  search.Enabled = false;   logic_operate.Enabled = false;
  field_name.Enabled = true;
  field_name.Focus();
  select_command = select_command logic_operate.SelectedValue " (";
  command_display.Text = select_command;
  }
  3.6 執行查询
  单击“执行查询”命令按钮开始查询,并将查询结果绑定到GridView控件(ID:result)上。
  protected void search_Click(object sender, EventArgs e)
  {
  SqlConnection cn = new SqlConnection(“server=.;database=employee;uid=sa;pwd=”);
  cn.Open();
  DataTable dt = new DataTable();
  SqlDataAdapter da = new SqlDataAdapter(select_command, cn);
  da.Fill(dt);
  result.DataSource = dt;
  result.DataBind();
  send.Visible = true;
  }
  3.7 重新选择
  单击“重新选择”命令按钮,清除前面的选择结果。
  protected void again_Click(object sender, EventArgs e)
  {
  field_name.SelectedIndex = field_name.Items.Count - 1;
  logic_operate.SelectedIndex = logic_operate.Items.Count - 1;
  operate.SelectedIndex = operate.Items.Count - 1;
  field_name.Enabled = true;
  operate.Enabled = false;
  query_value.Enabled = false;
  logic_operate.Enabled = false;
  search.Enabled = false;
  query_value.Text = "";
  select_command = "select * from student_employee_info where (";
  command_display.Text = select_command;
  result.DataSource = null;
  result.DataBind();
  }
  4 建议
  该文只是针对一个数据表的查询进行了介绍,如果系统希望实现对多个数据表查询,可以创建一个查询数据表,其中字段table_name包含可以查询使用的表名,将需要的表明添加在此数据表中,可以先让用户选择需要查询的数据表名。然后再创建一个数据字典表,包含:table_name、field_name、field_explain字段,分别对应数据表名、字段标识、中文含义,当用户选择要查询的数据表之后,可以从中选择该表的可以供查询的字段绑定在字段选择下拉列表框中,这样就可以实现不同数据表的组合查询了。
  参考文献:
  [1] 邵雨舟. 毕业生就业跟踪系统中邮件群发功能的实现[J]. 电脑与电信, 2015(7).
其他文献
近日,中国农大一司尔特测土配方施肥技术研究基地在安徽省宣城市宣州区召开晚稻配方肥示范试验现场实收与考评现场会,安徽省司尔特股份有限公司总经理金政辉及安徽销售总公司总
期刊
摘要:该文简单介绍了在PLC程序编写中,大多循环程序都可以套用的一种程序编写思路。在此以实例程序的方式具体阐述其编程思路和方法,以点盖面,可为其他类似的循环程序编写作为一种典型模式套用其中。  关键词:PLC;循环程序;典型;套用模式  中图分类号:TP312 文献标识码:A 文章编号:1009-3044(2018)01-0117-02  PLC技术是电子电气技术和信息技术的结合。PLC课程是电气
摘要:Apache Hadoop 是被广泛使用的一种云计算框架,但是由于其安全机制的薄弱,也是阻碍其发展的中心问题。本文概论了Hadoop平台的安全认证机制、访问控制机制及数据传输和数据加密机制的欠缺问题,同时提出了基于PKI的身份认证、基于角色的访问控制和基于身份认证的分级加密等相应的改进措施。  关键词:Hadoop平台;安全机制;身份认证;分级加密  中图分类号:TP311 文献标识码
目的:探讨辨证施护对气滞血瘀型胸痹心痛患者的护理效果。方法:在中医基础理论的指导下,对气滞血瘀型胸痹心痛患者运用辨证施护的理论,从护理、用药、饮食等方面作了较全面的护理
摘要:该文旨在研究针对大学生的电信诈骗过程,深入分析诈骗原因,揭露诈骗本质,提高大学生的防骗意识。本文主要从信息论的角度对诈骗者和大学生之间的信息交互过程研究分析,发现诈骗者主要利用信息不对称进行信息误导,使信息素养不高、社会阅历浅、防范意识差的大学生无法做出正确的信息决策。本研究建立了信息干预模型,通过对诈骗者、大学生和信息空间实施信息干预,降低电信诈骗发生的可能性,为预防电信诈骗提供新的思路。
摘要:当前,各种网络业务得到不断发展,多种应用数据迅速增长。在大数据背景下,各个领域更加重视大数据应用,且高校信息系统的数据结构、数据量也出现了极大程度的变化。高校信息系统需要更加全面的分析数据存储与数据挖掘方面的问题,并借助大数据来建设自身的信息系统,从而更好地适应大数据时代。  关键词:大数据时代;高校;信息系统;建设  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2