2011-11-17 56 views
-3

這裏是我的代碼:任何想法爲什麼一個分配語句有效,另一個不行?

string strSQL = "SELECT * from tMedia where SKU = '" + SKU + "'"; 
FbCommand command = new FbCommand(strSQL, databaseConn); 

if (databaseConn.State == ConnectionState.Closed) 
    databaseConn.Open(); 

FbDataReader data = command.ExecuteReader(); 
data.Read(); // only one row is returned 

// assignment to "x" is empty (277?) 
string x = (string)data["ProductType"].ToString(); 

// find product type and set flag for later testing 
// obviously, these don't work either! 
if (data["ProductType"].ToString().Contains("Video ")) 
    videoFormat = true; 
else if (data["ProductType"].ToString().Contains("Music: ")) 
    audioFormat = true; 

// coProductType.Text assignment is correct 
coProductType.Text = data["ProductType"].ToString(); 
+6

關於SQL注入和不使用參數化查詢不好的評論。 – Yuck

+5

這是有點不清楚你問的。 277在哪裏進來?你爲什麼要調用ToString *和* casting? –

+4

關於不使用'using'塊的評論(Firebird文檔確實使用它們)。 –

回答

0

它現在正在工作......這裏是代碼,如果任何人有興趣......我不明白爲什麼移動對象的方法以外的工作。如果有人能夠啓發我,我會非常感激。

string mediaFormat = ""; 
    bool video; 
    bool audio; 
    //--------------------------- populate the detail panel ---------------------| 
    private int PopulateDetailPanel(string SKU) { 
     decimal convertedMoney; 

     clearDetailPanel(); // clear out old stuff 

     // now, find all data for this SKU 
     if (databaseConn.State == ConnectionState.Closed) 
      databaseConn.Open(); 

     string strSQL = "SELECT * from tMedia where SKU = '" + SKU + "'"; 
     FbCommand command = new FbCommand(strSQL, databaseConn); 

     // find product type and set flag for later testing 
     FbDataReader data = command.ExecuteReader(); 
     data.Read(); // only one row is returned 

     coProductType.Text = data["ProductType"].ToString(); // while we're here, might as well set it now 
     mediaFormat = data["ProductType"].ToString(); 

     if (mediaFormat.Substring(0, 6) == "Video ") 
      video = true; 
     else if (mediaFormat.Substring(0, 7) == "Music: ") 
      audio = true; 
0

由於唯一的區別是投給字符串,它似乎是一個合理的第一步是要刪除。反正它不應該是必要的。

+0

我試過了......我也試過這個,但無濟於事...... coProductType.Text = data [「ProductType」]。ToString(); //當我們在這裏,不妨設置它/ n string xzzzz = data [40] .ToString(); string yzzzz = data.GetString(40); string zzzzz = coProductType.SelectedItem.ToString(); – SpokaneDude

+1

您在什麼時候檢查變量值?如果您等待函數後,那麼coProductType.Text可能是正確的,但x將超出範圍,並且可能會有另一個x在更廣的範圍內,其值爲277. – djs

+0

djs:可能會說明它...通過移動方法/函數之外的變量,範圍更改......也許這就是它所需要的......感謝這個建議...... – SpokaneDude

1

也許你需要處理當有人輸入一個無效的SKU時會發生的問題,並且返回NO數據行。

+0

不能發生......他們必須從datagridview中選擇記錄到populatae詳細...無論如何謝謝 – SpokaneDude

+0

像你一樣,我不明白你的解決方案。另一種遠程可能性是,如果你從gridview抓取SKU,它可能會有尾隨空格,導致select失敗。 –

+0

選擇不失敗......任務是,但它現在已修復......無論如何。 – SpokaneDude

相關問題