将combox连接到文本框与数据库时出错

时间:2010-07-09 10:11:44

标签: c# .net

我正在使用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();

3 个答案:

答案 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是字母数字。