当前位置: 代码迷 >> .NET新技术 >> winfrom窗体中有N个输入框一个查询旋钮,需要按输入框中“有内容的部分”在SqlServer中查询数据
  详细解决方案

winfrom窗体中有N个输入框一个查询旋钮,需要按输入框中“有内容的部分”在SqlServer中查询数据

热度:505   发布时间:2016-04-25 01:23:22.0
winfrom窗体中有N个输入框一个查询按钮,需要按输入框中“有内容的部分”在SqlServer中查询数据。
下面我贴出我的窗体:    

还有我的代码:
 private SqlCommand button1_Click(object sender, EventArgs e)
        {
            //数据库连接字符
            SqlConnection con = new SqlConnection("server=Sofia;uid='" + _value2 + "';pwd='" + _value2 + "';database=renvecf");
            //开启数据连接
            con.Open();
                    //传入数据库的执行语句
                SqlCommand com = new SqlCommand("select USER_ID 用户编号, USER_NAME 用户名, PASSWORD 密码, AGE 年龄, SEX 性别 from dbo.T_user "+userid+"", con);
                if (this.textBox1.Text.Length > 0)
                {
                    userid += "Where USER_ID='"textBox1.Text.ToString()"'";
                }

                if (this.textBox2.Text.Length > 0)
                {
                    username+="Where USER_ID='"textBox1.Text.ToString()"'";

                }
            //DataSet 和 SQL Server之间的桥接器(数据适配器)
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = com;
            //和数据库交互(增/删/改)少时用DataSet
            DataSet ds = new DataSet();
            //调用传入数据库的执行语句(通过适配器填充到DataSet(内存数据库))
            da.Fill(ds, "T_emp_view");

            //datagripview控件的绑定数据库数据
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "T_emp_view";
        }


我如果有N个输入框不可能一个一个区筛选,但是SQL语句后面 循环添,我又不会写,  现在userid那一句的text.Box1 和分号 都报应输入; 的错误     我也没少写啊 userid += "Where USER_ID='"textBox1.Text.ToString()"'";   怎么改  ,   然后 有AND 和没AND的sql语句怎么衔接啊????  请贴出代码 ~~谢谢,人人有分~
------解决思路----------------------

string sqlStr = "select USER_ID 用户编号, USER_NAME 用户名, PASSWORD 密码, AGE 年龄, SEX 性别 from dbo.T_user";
List<string> whereList = new List<string>();
if (this.textBox1.Text.Length > 0) whereList.Add("USER_ID='"+textBox1.Text.ToString()+"'");
if (this.textBox2.Text.Length > 0) whereList.Add("USER_ID='"+textBox1.Text.ToString()+"'");
if (whereList.count > 0) sqlStr += string.Join(" and ", whereList.ToArray());
SqlCommand com = new SqlCommand(sqlStr, con);

------解决思路----------------------
哥哥,判断输入框是否有值,如果有,就拼接字符串这种做法没错,错的是,你为啥每次拼接都是where,而不是and?然后where部分拼完后最后记得判断下是否成功组织了where条件,因为有可能一个都没输入
------解决思路----------------------
1楼最后的拼接少了个where关键字
------解决思路----------------------
userid += "Where USER_ID='"textBox1.Text.ToString()"'";

你的代码明显少了2个+号吧 所以才报分号的错
userid += "Where USER_ID='"+textBox1.Text.ToString()+"'";

另外你下面的username也少了2个+号
  相关解决方案