2016-05-13 19 views
0

ラベルに表示するデータベースから値を取得しようとしています。まず、ドロップダウンリストの値を取得し、それに基づいてデータベースから取得する必要があります。その後、私は自分のラベルにtitlePromoカラムを取得する必要があります。ラベルのデータベース値asp.net c#

現在、私はコードがありますが、正しいかどうかはわかりません。エラーはありませんが、titlePromoではなくmembershipType列が表示されます。私がこれまで行ってきた

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; 

     } 
+0

あなたのコードは私にはうまく見えます。 – Mairaj

+0

ええ、それは私が望む結果を見せていない。代わりに別の列を表示しています – lel

+0

他の列を表示する方法を右の列に選択していますか?その後、グリッドをバインドしている可能性があります。 – Mairaj

答えて

1

あなたに私の提案を与える前に私が希望しますいくつかのrを作る既存のコードにemarks:

  • あなたが唯一のフィールドではなく、行全体を必要として(したがって、あなたが最初の場所でのデータセットを必要としない)、クエリでのみtitlePromoを選択する必要があります
  • あなたの関数の名前はそのスコープによるものではなく、タイトルを取得するのではなく、プロモーションテーブルのエントリ全体を取得します。
  • "membershipType = '%' + @ mememember + '%'"構文が正しくありません。ワイルドカードは

ベローのキーワード「のような」と一緒に使用されている、あなたは私があなただったら、私はそれを実装する方法を私のコードサンプルを見つけることができます。

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; 
    } 

ワイルドカードを使用する場合と、 '好き'、あなたはこれのようにすることができます:

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 + "%"); 
関連する問題