问题描述
问题1SqlConnectionconn=db.createcon();conn.Open();stringsql="select*fromUserinfo";SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReadersdr=cmd.ExecuteReader();this.Ddluserclass.DataSource=sdr;this.Ddluserclass.DataTextField="Userclass";this.Ddluserclass.DataValueField="Userclass";this.Ddluserclass.DataBind();conn.Close();用户信息表(userinfo)中的字段用户班级(userclass)有重复的,因为不同用户可以在一个班里,在帮定到下拉列表框(Ddluserclass)时为了设置不让它显示重复的班级,应该如何写代码?问题2另外,在根据用户班级查询时:stringuserclass=this.Ddluserclass.SelectedValue;/本句是否有错(列表框值不是手动输入而是动态帮定的)SqlConnectionconn=db.createcon();conn.Open();stringlicenfind="select*fromuserinfowhereuserclass='"+userclass+"'";SqlDataAdaptersda=newSqlDataAdapter(licenfind,conn);DataSetds=newDataSet();sda.Fill(ds);this.Gvliceninfo.DataSource=ds;this.Gvliceninfo.DataBind();conn.Close();为什么的不到预期结果?
解决方案
解决方案二:
问题1参考:将“stringsql="select*fromUserinfo";改为stringsql="selectdistinctuserclassfromUserinfo";问题2参考:通过设置断点,进行单步调试找找看吧。最后建议楼主好好学习SQL基础。祝楼主早日解决问题!
解决方案三:
问题1代码可这样写更合理:SqlConnectionconn=db.createcon();stringsql="selectdistinctuserclassfromUserinfo";SqlCommandcmd=newSqlCommand(sql,conn);conn.Open();//慢点打开SqlDataReadersdr=cmd.ExecuteReader(CommandBehavier.CloseConnection);this.Ddluserclass.DataSource=sdr;//因为只有一个字段,所以那两句也省了this.Ddluserclass.DataBind();//close语句不需要了,因为在DataBind语句里面如果数据源是阅读器,读完会自动关闭阅读器,而阅读器又会自动关闭连接问题2建议不要用字符串连接的方式来组合Sql语句,可以使用@参数,(安全原因,虽然DropDownList是不能输入的,但同样可以进行注入攻击)另外代码没错,得不到预期结果应该是其他原因,建议设给断点一步一步看看
解决方案四:
SqlConnectionconn=db.createcon();conn.Open();stringsql="selectdistinctuserclassfromUserinfo";SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReadersdr=cmd.ExecuteReader();this.Ddluserclass.DataSource=sdr;this.Ddluserclass.DataTextField="Userclass";this.Ddluserclass.DataValueField="Userclass";this.Ddluserclass.DataBind();conn.Close();在根据用户班级查询时:stringuserclass=this.Ddluserclass.SelectedValue;/本句是否有错(列表框值不是手动输入而是动态帮定的)SqlConnectionconn=db.createcon();conn.Open();stringlicenfind="select*fromuserinfowhereuserclass='"+userclass+"'";SqlDataAdaptersda=newSqlDataAdapter(licenfind,conn);DataSetds=newDataSet();sda.Fill(ds);this.Gvliceninfo.DataSource=ds;this.Gvliceninfo.DataBind();conn.Close();问题2按班级查询时,无论选择列表框中的哪个项,都会默认将第一项对应的内容选出来,这是怎么回事?
解决方案五:
路过路过……
解决方案六:
distinct
解决方案七:
都是很好的建议!值得学习
解决方案八:
什么呀