簡體   English   中英

無法從C#中的列表中檢索數據

[英]Unable to retrieve data from list in C#

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

您正在使用List,就好像它是一個數組。 如果從表中選擇了一條記錄,則無需通過以下更改更改大部分代碼,否則它將顯示與材料名稱匹配的最后一條記錄。

public string[] displayMaterial()
{
    var materialList = new string[6];

在你的AppForm_Load中

string[] items = prices.displayMaterial();

閱讀MSDN Development Fundamentals中 常用的集合類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM