2015-02-26 76 views
0

我已經創建了一種方法來在每次數據添加到數據庫時檢查數據庫。原因是檢查重複的主鍵(手動生成)。我面臨的問題是即使數據存在於數據庫中,該方法始終返回空值。在插入數據之前檢查數據庫時總是得到空值

這裏是我的代碼:

public int checkComRegnumberAvailable(string conRegnumber) 
{ 
    using (SqlConnection con = new SqlConnection(cs)) 
    { 
     SqlCommand cmd = con.CreateCommand(); 
     cmd.CommandText = "SELECT RegNumber FROM OtherCompanyData"; 
     con.Open(); 
     //string result = ((string)cmd.ExecuteScalar()); 
     string result = (string)cmd.ExecuteScalar(); 
     cmd.ExecuteNonQuery(); 

     if (result == null) 
     { 
      return 0; 
     } 

     if (result.Equals(conRegnumber)) 
     { 
      return 1; 
     } 


     else 
     { 
      return 2; 
     } 
    } 
} 
+2

你確定你的'選擇RegNumber FROM OtherCompanyData'返回的數據?您是否在Management Studio上嘗試過?如果'result'爲'null',那意味着你的命令返回空集。 'cmd.ExecuteNonQuery()'在你的情況下是無用的。它什麼都不做。 –

+0

當你使用'select'類時,你不能使用ExecuteScalar。 select將返回記錄列表(即使記錄只包含每個記錄的一個值)。你實際上在尋找什麼,如果一個帶有'conRegnumber'值的記錄已經存在? –

+0

@SteenTøttrup['ExecuteScalar'](https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar(v = vs.110).aspx):_返回第一列結果集中的第一行由query_ – Grundy

回答

-1

你可以,以便從數據庫retrive informatiom使用DataReader。下面的鏈接顯示瞭如何在代碼中使用它的一個很好的例子。

https://msdn.microsoft.com/en-us/library/haa3afyz%28v=vs.110%29.aspx

+0

爲什麼使用reader如果從db得到一個字段? – Grundy

+2

不,它不_need_。 'ExecuteScalar'完全符合OP的要求。這是一個僅鏈接的答案。 [是否只包含其他鏈接的答案真的是「好答案」?](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers) –

+0

@SonerGönül現在編輯我的答案。在過去的經驗中,我總是使用SqlDataReaders,同時從數據庫中檢索信息,無論是一個字段還是多個字段,因此我認爲這將是OP正在尋找的。 –

相關問題