我正在使用C#.net平台
我想将我的combox连接到我的文本框
这是我完成的代码,但它给了我错误
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
panel1.Visible = true;
string sql;
SqlConnection cn = new SqlConnection();
cn.ConnectionString = "Data Source=CJ\SQLEXPRESS;Initial Catalog=elligiblity;Persist Security Info=True;User ID=sa;Password=123";
cn.Open();
sql = "SELECT inst_name FROM institude WHERE(inst_id="+comboBox2.SelectedItem+")";
SqlCommand cmd = new SqlCommand(sql,cn);
SqlDataReader myReader = cmd.ExecuteReader();
while(myReader.Read())
{
textBox2.Text = myReader["inst_name"].ToString();
}
myReader.Close();
cn.Close();
无法绑定多部分标识符“System.Data.DataRowView”。
在这行代码上
SqlDataReader myReader = cmd.ExecuteReader();
答案 0 :(得分:1)
除了这个问题之外,您可能还需要记住一些代码问题。
首先,如果打开和关闭连接之间存在错误(确实存在),那么您可能会打开连接。最终这会扼杀您的网站。使用
using (SqlConnection cn = new SqlConnection())
{
}
当你超出using语句的范围时,连接将被关闭并被处理掉。
此外,您可能希望参数化您的查询(出于安全性和效率的原因),因此它是
sql = "SELECT inst_name FROM institude WHERE(inst_id=@inst_id)";
然后将该参数添加到命令对象并将其值设置为组合框所选项目值。
答案 1 :(得分:0)
你想要
comboBox2.SelectedValue
或
comboxBox2.SelectedItem.ToString()
然后我会考虑使用参数,因为这不是创建SQL字符串的好方法。
另外,你是否意识到如果你返回多个结果,你的textbox2将只显示最后的结果,因为它的文本将被覆盖,每个结果都是读取的?
答案 2 :(得分:0)
首先检查下拉列表的绑定。如果你使用ID和Text绑定数据源,就像这个combobox2.DisplayMember =“Name”; combobox2.ValueMember =“ID”。之后,你必须检查你的查询中使用的参数,如果你的文本然后尝试使用combobox2.text,如果你在id的基础上选择使用int.parse(combobox2.selectedvalue),或者只是你的id是combobox2.selectedvalue是字母数字。