我正在使用C#.Net和MSSQL服务器设计WinForms桌面应用程序。在下面的课程中,我使用sqlDataReader
读取了存储过程中的数据,并将其插入List<>
。
稍后我想在textboxes
中显示列表值。我的问题是,当我从列表中检索数据时,texbox中没有显示任何内容。
我的存储过程:
create proc spDispMaterialPrice
@materialName nvarchar(100)
as
begin
select unitPrice,carbohydrate,protein,fat,humidity,minerals from materialPrice where
materialName = @materialName
end
类别:
//display data retrived according to material combobox to user when form loads
public List<string> displayMaterial()
{
List<string> materialList = new List<string>();
string conString = ConfigurationManager.ConnectionStrings["secaloFormulaCS"].ToString();
using (SqlConnection sqlCon = new SqlConnection(conString))
using (SqlCommand sqlCmd = new SqlCommand("spDispMaterialPrice", sqlCon))
{
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCon.Open();
sqlCmd.Parameters.AddWithValue("materialName", MaterialName);
SqlDataReader sqlDr = sqlCmd.ExecuteReader();
while (sqlDr.Read())
{
materialList[0] = sqlDr["unitPrice"].ToString();
materialList[1] = sqlDr["carbohydrate"].ToString();
materialList[2] = sqlDr["protein"].ToString();
materialList[3] = sqlDr["fat"].ToString();
materialList[4] = sqlDr["humidity"].ToString();
materialList[5] = sqlDr["minerals"].ToString();
}
sqlCon.Close();
sqlCon.Dispose();
}
return materialList;
}
}
}
winform:
private void AppForm_Load(object sender, EventArgs e)
{
this.materialPriceTableAdapter.Fill(this.secaloFormulaDataSet.materialPrice );
//panel1.Hide();
Classes.Prices prices = new Classes.Prices(comboBox1.SelectedItem.ToString());
List<string> items = prices.displayMaterial();
textBox3.Text = items[0];
答案 0 :(得分:2)
您正在使用List,就像它是一个数组一样。如果从表中选择了一条记录,则无需通过以下更改更改大部分代码,否则它将显示与材料名称匹配的最后一条记录。
public string[] displayMaterial()
{
var materialList = new string[6];
和你的AppForm_Load
string[] items = prices.displayMaterial();
阅读Commonly Used Collection Types
中的MSDN Development Fundamentals