2017-04-04 58 views
0

我試圖使用分配給變量BinId值如下while語句之外的內部定義的值:保留while語句

cmd.CommandText = "SELECT max(binID) from bin"; 
MySqlDataReader idReader = cmd.ExecuteReader(); 

int BinId; 

while (idReader.Read()) 
{ 
    BinId = idReader.GetInt32(0); 
    System.Diagnostics.Debug.WriteLine(BinId); 
} 

是有辦法,我能做到這一點?

編輯:這是我想要與BinId

cmd.CommandText = "insert into mydb1.missedbin values (null, '" + personIDdata + "','" + dateFound + "','"+ BinId +"')";

+0

「where」語句,變量BinId在哪裏? – Adil

+0

對不起,應該寫,而編輯。 – Richard1996

+0

發佈一個不起作用的代碼示例,以便我們能夠理解您的目標。因爲你這樣說的方式,它應該只是工作 – Andrei

回答

0

變化whileif。這是因爲你只得到一個單一的值,所以不需要一段時間,只會有一個記錄。你還應該檢查產生的binId的值,以確保它是一個正數(如果有記錄,我認爲這是預期的結果)。

int BinId = 0; 
cmd.CommandText = "SELECT max(binID) from bin"; 

// wrap your reader in a using block 
using(MySqlDataReader idReader = cmd.ExecuteReader()) 
{ 
    if (idReader.Read()) 
    { 
     BinId = idReader.GetInt32(0); 
     System.Diagnostics.Debug.WriteLine(BinId); 
    } 
    if(BinId < 1) 
     return; // You did not get a value so exit your method or do something.... 
} 

// NOTE: DO NOT DO THIS, always use parameterized queries 
cmd.CommandText = "insert into mydb1.missedbin values (null, '" + personIDdata + "','" + dateFound + "','"+ BinId +"')"; 

關於你的insert語句,不要寫這樣的查詢。始終使用參數化查詢。

+0

它似乎還沒有被分配到if語句之外。 – Richard1996

+0

@ Richard1996 - 好的,你確實需要在某個時候指定它.... – Igor