标签 asp.net 中的数据库值 c#

Database value in label asp.net c#

我正在尝试从数据库中获取值以显示在标签中。首先,我必须获取下拉列表的值并根据它从数据库中检索。之后,我需要将 titlePromo 列放入我的标签中。

目前我有代码,但我不确定它是否正确。没有错误,但它显示了 membershipType 列而不是 titlePromo。

  ID  titlePromo   membershipType         defaults  
  --  ----------   --------------         ------    
  1    Promo 1     Membership Promotion      Y      
  2    Promo 2     Membership Renewal        Y       
  3    Promo 3     Membership Grad           Y       
  4    Promo 4     Membership Promotion      N       
  5    Promo 5     Membership Promotion      N      
  6    Promo 6     Membership Grad           N   

到目前为止我完成的代码:

string strConnectionString = ConfigurationManager.ConnectionStrings["FYPDB"].ConnectionString;

            SqlConnection myConnect = new SqlConnection(strConnectionString);


            string strCommandText2 = "select * FROM FYPDB.dbo.Promotions where membershipType = '%' + @membership + '%' AND defaults = 'Y'";

                string ddlmembership = ((DropDownList)dvInsertPromotion.FindControl("ddlAddMembershiplist")).SelectedItem.ToString();

                cmd.Parameters.Add("@membership", SqlDbType.NVarChar);

                cmd.Parameters["@membership"].Value = ddlmembership;

 DataSet da2 = dal.retrieveTitle(ddlmembership);
                    SqlCommand cmd2 = new SqlCommand(strCommandText2, myConnect);

                    ((Label)pnlDefaultPopup.FindControl("Label13")).Visible = true;
                    ((Label)pnlDefaultPopup.FindControl("Label13")).Text = da2.Tables[0].Rows[0]["titlePromo"].ToString();

html:

.cs

  public DataSet retrieveTitle(String membership)
        {
            SqlParameter[] parameters = new SqlParameter[]{
                new SqlParameter("@membership", SqlDbType.NVarChar),

            };
            parameters[0].Value = membership;

            DataSet ds = new DataSet();
            ds = commons.ExecuteDataSet("Select * FROM Promotions WHERE (membershipType = '" + membership + "') AND defaults = 'Y' ");

            return ds;

        }

在给你我的建议之前,我想对你现有的代码做一些评论:

  • 您应该 select 在您的查询中只使用 titlePromo,因为您只需要一个字段,而不是整行(因此您首先不需要数据集)
  • 你的功能的命名不是根据它的范围,它不检索标题,而是促销中的整个条目 table。
  • 在此结构中 "membershipType = '%' + @membership + '%'" 语法不正确。通配符与"like"关键字一起使用

在下面,您可以找到我的代码示例,如果我是您,我将如何实现它:

static void Main(string[] args)
    {
        using (SqlConnection PubsConn = new SqlConnection(yourConnectionString))
        {
            //code to retrieve membership   
            var membership = "Membership Promotion";
            var title = retrieveTitle(PubsConn, membership);
           //code to set up label   
        }      
    }

    public static string retrieveTitle(SqlConnection conn, String membership)
    {
        conn.Open();

        var title = string.Empty;
        string strCommandText = "select top 1 titlePromo FROM Promotions where membershipType = @membership AND defaults = 'Y'";
        SqlCommand commmand = new SqlCommand(strCommandText, conn);
        commmand.Parameters.AddWithValue("@membership", membership);

        try
        {
            using (SqlDataReader reader = commmand.ExecuteReader())
            {
                if (reader != null && reader.Read())
                {
                    title = Convert.ToString(reader["titlePromo"]);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error while retrieving table: " + ex.Message);
        }

        conn.Close();
        return title;
    }

如果你想使用通配符和'like',你可以这样做:

string strCommandText = "select top 1 titlePromo FROM membershipTest where membershipType like @membership AND defaults = 'Y'";
SqlCommand commmand = new SqlCommand(strCommandText, conn);
commmand.Parameters.AddWithValue("@membership", "%" + membership + "%");