我想在表单上填充ComboBox。我有存储过程来获取我的ComboBoxes的数据。我的代码如下。问题是我的组合框没有填充。当我单步执行代码时,它会进入“reader = sc.ExecuteReader();” line并且不执行Pop_ComboBox()中的任何后续行。存储过程返回“ID”和“描述”(仅)。我做错了什么?
private void frmInput_Load(object sender, EventArgs e)
{
//Connect to the db
this.sqlConn = new SqlConnection("Server=\"our_server";Database=\"Astra\";Trusted_Connection=yes;");
//Populate the Equipment Type Listbox
Pop_ComboBox("exec uspASTRA_GetEquipTypeList;", cboEquipType);
}
private void Pop_ComboBox(string sQuery, ComboBox NameOfcbo)
{
SqlCommand sc = new SqlCommand(sQuery, this.sqlConn);
SqlDataReader reader;
reader = sc.ExecuteReader();
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Description", typeof(string));
dt.Load(reader);
NameOfcbo.ValueMember = "ID";
NameOfcbo.DisplayMember = "Description";
NameOfcbo.DataSource = dt;
}
答案 0 :(得分:1)
答案 1 :(得分:0)
将命令类型显式设置为存储过程
sc.CommandType = CommandType.StoredProcedure;
并且不要使用exec
只使用存储过程名称
答案 2 :(得分:0)
所以我想把这一点归结为对我自己的问题的切实回答。但是,我需要在应有的地方给予肯定,因为如果没有其他人的好想法,我无法回答。
首先,我需要一个围绕我的代码的Try-Catch块。如果我有这个,我会得到我与db没有良好连接的信息。谢谢Dario-Ramos!
其次,我需要一个良好的连接字符串并显式连接到db。明显。谢谢,Azhar Khorasany!
最后,正如Eslam Gamal所建议的,我需要将命令类型设置为“存储过程”,并执行如下:
sc.CommandType = CommandType.StoredProcedure;
SqlDataReader dr = sc.ExecuteReader();
谢谢大家的建议。我学到了一些有价值的课程,我的组合框已经填充了!