2017-05-03 12 views
0

爲了更好地解釋我的個人網站項目的問題,我將從我創建的數據庫開始。該表被稱爲guitarItems。 enter image description hereSQL語句不能使用asp.net工作嗎?

這張表是我在哪裏得到數據在網頁上顯示圖像和吉他的細節。爲了做到這一點,我創建了一個名爲「GetGuitarItems」的方法來執行和讀取sql語句。

public static ArrayList GetGuitarItems(string itemCategory) 
{ 
    ArrayList list = new ArrayList(); 
    string query = string.Format("SELECT * FROM guitarItems WHERE brand LIKE '{0}'", itemCategory); 

    try 
    { 
     conn1.Open(); 
     command1.CommandText = query; 
     SqlDataReader reader = command1.ExecuteReader(); 

     while (reader.Read()) 
     { 
      int id = reader.GetInt32(0); 
      string type = reader.GetString(1); 
      string brand = reader.GetString(2); 
      string model = reader.GetString(3); 
      double price = reader.GetDouble(4); 
      string itemimage1 = reader.GetString(5); 
      string itemimage2 = reader.GetString(6); 
      string description = reader.GetString(7); 
      string necktype = reader.GetString(8); 
      string body = reader.GetString(9); 
      string fretboard = reader.GetString(10); 
      string fret = reader.GetString(11); 
      string bridge = reader.GetString(12); 
      string neckpickup = reader.GetString(13); 
      string bridgepickup = reader.GetString(14); 
      string hardwarecolor = reader.GetString(15); 

      GuitarItems gItems = new GuitarItems(id, type, brand, model, price, itemimage1, itemimage2, description, necktype, body, 
       fretboard, fret, bridge, neckpickup, bridgepickup, hardwarecolor); 
      list.Add(gItems); 
     } 
    } 
    finally 
    { 
     conn1.Close(); 
    } 

    return list; 
} 

接着的部分是這個代碼,其中你顯示已從數據庫中檢索的數據。

public partial class Pages_GuitarItems1 : System.Web.UI.Page 
{ 
private string brandType = "Ibanez"; 
private int x = 0; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    FillPage(); 
} 

private void FillPage() 
{ 
    ArrayList itemList = new ArrayList(); 
    ArrayList itemListPage = new ArrayList(); 

    if (!IsPostBack) 
    { 
     itemList = ConnectionClassGuitarItems.GetGuitarItems("%"); 
    } 
    else 
    { 
     itemList = ConnectionClassGuitarItems.GetGuitarItems(brandType); 
    } 

    StringBuilder sb = new StringBuilder(); 

    foreach (GuitarItems gList in itemList) 
    { 
     itemListPage.Add("GuitarItemsIbanezDetails" + (x + 1) + ".aspx"); 

     sb.Append(
       string.Format(
        @" 
        <div class='one-two'> 
         <a href='{3}' runat='server'><img runat='server' src='{0}'/></a> 
         <div class='content'> 
          <div id='label'>{1} {2}</div> 
         </div> 

       </div>", gList.ItemImage1, gList.Brand, gList.Model, itemListPage[x])); 

     x++; 

    } 

    lblOutput.Text = sb.ToString(); 

} 
} 

現在的問題是它顯示數據庫中的每個吉他項目。從上面的代碼可以看出,我試圖展示的只是帶有品牌「Ibanez」的吉他物品。我對foreach代碼有懷疑,但至少現在,GetGuitarItemsMethod被設計爲僅獲得Ibanez吉他項目,並且數據將被傳遞到ArrayList itemList變量以用於顯示。我也檢查了sql語句,看起來是正確的。希望你們能幫助我解決這個問題。

+5

[注意小鮑比表。(https://xkcd.com/327/) –

+4

你有沒有注意到這條線? 'itemList = ConnectionClassGuitarItems.GetGuitarItems(「%」);' 並使用參數化查詢。 – aquinas

+1

只需調試你的代碼來檢查你從數據庫中得到了什麼。另外我想你想'LIKE'%{0}%'' –

回答

0

if (!IsPostBack) 
{ 
    itemList = ConnectionClassGuitarItems.GetGuitarItems("%"); 
} 
else 
{ 
    itemList = ConnectionClassGuitarItems.GetGuitarItems(brandType); 
} 

更改爲

itemList = ConnectionClassGuitarItems.GetGuitarItems(brandType);