现在的位置: 首页 > 综合 > 正文

第36章、多条件检索

2013年10月05日 ⁄ 综合 ⁄ 共 2045字 ⁄ 字号 评论关闭

 

【知识要点】
  (1)学习多条件检索

【问题提出】
  有时候我们记得客户名称的一部分,有时候我们只记得联系人,多条件检索在实际开发过程中更为常见。

【在线指导】

  通过上一章的学习,我们知道单条件检索是十分简单的,那么多条件检索虽说不上太难,但是并不简单,我们一起来学习一下多条件检索。

  我们看一下可能存在的情况(客户名称和联系人只相当于两个条件):

  (1)如果“客户名称”和“联系人”都不填,我们默认为查询所有客户信息,则相当于执行查询:SELECT * FROM Client;(注:如果是网站则应该什么也查不到,如果是软件,则常常可以查看所有信息)
  (2)如果“客户名称”为“郑州”和“联系人”为“吴”都填写,则相当于两个条件要同时符合,则相当于执行查询:SELECT * FROM Client WHERE vClientName LIKE '%郑州%' AND vContacter LIKE '%吴%';
  (3)如果“客户名称”为“郑州”,而“联系人”不填写,则相当于只查询客户名称包含”郑州”的客户,即可则相当于执行查询:SELECT * FROM Client WHERE vClientName LIKE '%郑州%';
  (4)如果“客户名称”不填,而“联系人”为“吴”,则相当于只查询联系人包含“吴”的客户,则相当于执行查询:SELECT * FROM Client WHERE vContacter LIKE '%吴%'。

  ……

  你可想而知,如果是三个条件呢?四个条件呢?你要写多少种情况呢?

  我们没有采取以上写法,而是巧妙的使用了……

1、设计界面

  (1)打开Hello项目,单击“启动页>最近使用的项目>Hello”。

  (2)在“解决方案资源管理器”中添加“SqlSearchMulti.aspx”页面。

  (3)从工具箱中拖1个GridView到SqlSearchMulti.aspx页面。

        
     (GridView控件ID属性分别为:gvClient)     
   
         (单击“>”箭头按钮。)

  
             (单击“自动套用格式”)    
  
           (选择:沙滩和天空样式)
   
            (单击“编辑列”)

  
              (单击“编辑列”)   
  依次添加多个BoundField列,HeaderText为表头显示文字,DataField为数据库Client表的列名,最后把“自动生成字段”前的复选框去掉。

2、添加代码

  (1)双击页面上的“空白”部分。

 我们在Page_Load()中间输入:

//连接SQL SERVER
string ConnSqlServer = "Server=www.genwoxue.com;Database=SuperMarket;User ID=sa;Pwd=sigmasoft";
SqlConnection Conn = new SqlConnection(ConnSqlServer);

//打开
Conn.Open();

//获取客户名称和联系人名称
string ClientName = tbClientName.Text.Trim();
string Contacter = tbContacter.Text.Trim();

//声明查询语句变量
string ClientNameSql="";
string ContacterSql="";
string ClientSql = "";

//如果客户名称不为空,生成ClientNameSql语句
if (ClientName != "")
  ClientNameSql = " AND vClientName LIKE '%" + ClientName + "%'";

//如果联系人不为空,生成ContacterSql语句
if (Contacter != "")
  ContacterSql = " AND vContacter LIKE '%" + Contacter + "%'";

//综合查询语句
ClientSql = "SELECT * FROM Client WHERE cClientCode<>'' " + ClientNameSql + ContacterSql;

//填充DataSet
SqlDataAdapter Adapter = new SqlDataAdapter(ClientSql, Conn);
DataSet Ds = new DataSet();
Adapter.Fill(Ds, "Client");

//执行命令
gvClient.DataSource = Ds.Tables["Client"];
gvClient.DataBind();

//关闭数据库
Conn.Close();

  讲解:

  注意体会本种写法的妙处,即使10个条件也不会增加多少个SQL语句。

  (2)从“解决方案资源管理器”中,选择“SqlSearchMulti.aspx”,单击右键“在浏览器中查看”。 

  在客户名称处输入:郑州

  当然我们也可以尝试在联系人处输入:吴

抱歉!评论已关闭.