zoukankan      html  css  js  c++  java
  • c# winform 多条件查找 外加网络人才回答

    浮生  Э 2012-11-22 

    c# winform 多条件查找

     
     20

    我现在有2个textbox  一个是用户名,另一个是电话   现在想对这两个进行条件查找datagridview里的数据

     string a = this.textBox2.Text.ToString().Trim();
                string str = "select * from 表1 where 电话  like '%" + a + "%'";

                SqlDataAdapter da = new SqlDataAdapter(str, conn);
                da.Fill(ds, "表1");
                dataGridView1.DataSource = ds.Tables["表1"].DefaultView;
                string b = this.textBox1.Text.ToString().Trim();
                string co = "select * from 表1 where 用户名  like '%" + a + "%'";

    这是我的一段代码,已经能够对用户名进行查找,对电话进行查找的时候

      string str = "select * from 表1 where 电话  like '%" + a + "%'";  里str显示已经定义过  该怎么办

     

    满意答案

    流星紫愿 6级 2012-11-23

    先把所有的结果 查询出来,不加条件放入到DataTable中,然后DataTable中有个Select方法,用这个,返回的是行数组,非常好用。
    下面有个例子
    dtShow是需要显示到DataGridView的表信息
    DataTable dtShow;
    dtPrison是所有的信息DataTable表,总信息表
    rows 是 DataRow[] rows;
    dttmp是临时的DataTable表
     dtShow = dtPrison.Clone();
               if (!string.IsNullOrEmpty(cbSheng1.Text))
               {
                   rows = dtPrison.Select("省 = '" + cbSheng1.Text + "'");//省是否为空,相当于第一个文本框条件
                   foreach (DataRow thisrow in rows)
                   {
                       dtShow.Rows.Add(thisrow.ItemArray);
                   }
               }
               else
               {
                   dtShow = dtPrison.Copy();
               }
               if (!string.IsNullOrEmpty(cbShi1.Text))//市是否为空,相当于你第二个文本框条件
               {
                   dttmp = dtShow.Copy();
                   rows = dttmp.Select("市 = '" + cbShi1.Text + "'");
                   dtShow.Clear();
                   foreach (DataRow thisrow in rows)
                   {
                       dtShow.Rows.Add(thisrow.ItemArray);
                   }
               }
               if (!string.IsNullOrEmpty(cbQu1.Text))//区是否为空相当于第三个文本框条件
               {
                   dttmp = dtShow.Copy();
                   rows = dttmp.Select("区 = '" + cbQu1.Text + "'");
                   dtShow.Clear();
                   foreach (DataRow thisrow in rows)
                   {
                       dtShow.Rows.Add(thisrow.ItemArray);
                   }
               }
    dataGridView.DataSource=dtShow;.//显示查询完毕后的结果
     
     

    满意答案

    古灵方程式 初级团  合作回答者:1人 2012-11-27

    用and就可以了
    最终生成SQL是这样子的,你可以参考着弄

    select * from 表1 where 电话 like '%123%' and 用户名 like '%abc%'

    你的代码风格需要注意:
    1.textBox2.Text 本来就是字符串,不需要ToString 浪费
    2.应该判断文本是否有输入,否则没有输入文本的时候,like会出错,因为生成的SQL会是 
       like '%%'
    3.表名 列名,最好加上方括号,比如 [表1] 这是好习惯
     

    其他回答(2)

    林小白 3级 2012-11-22

     String sql = select * from T_Paiban ;
    String condition="";
    if(textBox1.Text.Trim()!="")
    condition=" Num like '%" + textBox1.Text + "%' ";
    if( textBox2.Text.Trim()!=""){
    if(condition.Length>0){
    condition+=“ or ”;
    }
    condition+="Name like '%" + textBox2.Text + "%'"
    }
    if( textBox3.Text.Trim()!=""){
    if(condition.Length>0){
    condition+=“ or ”;
    }
    condition+="TheWeek like '%" + textBox3.Text + "%'"
    }
    if(condition!="")
    sql+=" where "+condition;应该就是这样的,如果还有编程方面的疑问,都是可以到问问堂找专业的编程方面的专家为你在线咨询作答的。
  • 相关阅读:
    HTML <input> 标签的 maxlength 属性
    HTTP 方法:GET 对比 POST
    怎么在html页面和js里判断是否是IE浏览器
    一行神奇的javascript代码
    c# 数据库批量插入数据SqlBulkCopy 示例
    c# 多线程调用窗体上的控件 示例
    sqlserver查找使用了某个字段的所有存储过程
    SQL Server 数据库性能优化
    SQL语句的执行过程
    Sql Server- 性能优化辅助指标SET STATISTICS TIME ON和SET STATISTICS IO ON
  • 原文地址:https://www.cnblogs.com/meimao5211/p/3334178.html
Copyright © 2011-2022 走看看