2013-10-09 40 views
1
public TransImport() 
{ 
    ConnString = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString; 
    conn_new = new SqlConnection(ConnString); 
    command_serial_new = conn_new.CreateCommand(); 
    command_serial_new.CommandText = "SELECT 1 FROM YSL00 WHERE SERLNMBR = @slnr"; 
    var p = new SqlParameter("@slnr", SqlDbType.NVarChar, 50); 
    command_serial_new.Parameters.Add(p); 
    //Here you will start reading flat file to get serialnumber. 
    //Here I have shown a simple call using one value 12345 but it will be 1000's of 
    //lines from flatfile. 

    if (CheckSerialNumber('12345')) 
     DisplayMessage("Good serialnumber"); //this function is not copied here. 
} 

private Boolean CheckSerialNumber(string SerialNumber) 
{ 
    command_serial_new.Parameters["@slnr"].Value = SerialNumber; 
    try 
    { 
     var itExists = (Int32)command_serial_new.ExecuteScalar() > 0; 
     if (itExists) 
     { 
      return true; 
     } 
    } 
    catch (Exception ex) 
    { 
     LogException(ex, "Error in CheckSerialNumber =>"+ command_serial_new.CommandText.ToString()); 
    } 
    return false; 
} 

上面的catch中出現錯誤。它提到使用SqlParameter和ExecuteScalar獲取錯誤

對象引用不設置到對象的實例

它與具有ExecuteScalar線失敗。

我想我在這裏做錯了什麼,但無法弄清楚到目前爲止。

更新1:我修改了這個問題。基本上,我用一個我正面臨的問題創建了另一個問題。我也將其標記爲已回答。

這是我剛剛發佈的新問題。

Getting timeout errors with SqlTransaction on same table

+0

您是否嘗試過調試,並檢查command_serial_new.ExecuteScalar()的值?您既在一行中進行投射和比較,這也會使問題更加複雜化。 –

+0

@DaveSwersky:我已經更新了我的問題。請檢查 – Anirudh

回答

0

@SLaks答案是正確的。

這裏有一個避免錯誤的方法。無需空檢查等,Convert.ToInt32照顧一切。

var itExists = Convert.ToInt32(command_serial_new.ExecuteScalar()) > 0; 
+0

:我已更新我的問題。請檢查 – Anirudh

+0

我會建議你創建一個新的問題 –

+0

我將創建一個新的問題。 – Anirudh

2

如果發生這種情況的ExecuteScalar()回報null。 (例如,因爲沒有行匹配)

由於int是一個值類型,它不能爲空;因此,你會得到一個錯誤。

取而代之,您可以將其轉換爲int?,該值可以爲空。

+0

我已更新我的問題。請檢查 – Anirudh

0

嘗試:

int i; 
object o = command_serial_new.ExecuteScalar(); 
if(o != null && Convert.ToInt32(o.ToString()) > 0) 
{ 

    //.... 
} 

,以驗證您的查詢返回的東西

+0

我已更新我的問題。請檢查 – Anirudh