2016-02-10 29 views
2

我目前有一個連接打開,只是通過用戶輸入的依賴查詢。我的對象是正確的,我已經設置了與對象相關的實例,它都工作正常。C#:如何檢查一個字符串DataRow

如果用戶輸入與存儲的數據庫數據相同,我現在需要匹配,但它似乎不工作;雖然我沒有得到任何的錯誤。

在做了一些我自己的調試和研究之後,我嘗試使用ToString();將我的DataRow轉換爲字符串,但仍然沒有運氣。

任何人都可以看看這段代碼,並可能幫助我試圖弄清楚這一點嗎?非常感謝。

DataSet ds = new DataSet(); 
query = new MySqlDataAdapter(SQL, conn); 
query.Fill(ds, "AllData"); 
DataTable dt = new DataTable(); 
dt = ds.Tables["AllData"]; 
DataRow[] r = dt.Select(); 
int i = 0; 
while (i != r.Length) 
    { 
    string toTest = r[i]["BusinessID"].ToString(); 
    if(toTest == sinput) 
    { 

注:sinput是用戶輸入和r[i]["BusinessID"]包含了數據庫,我試圖來匹配輸入字符串的數據。

編輯:我沒有通過任何東西到dt.Select()出於安全的目的,因爲我不想直接用戶輸入到查詢中。

+0

,你可以考慮做'DT [I] [「businessID]的ToString();',而不是說我自己也嘗試在數據行 – Takarii

+0

我做了一個簡單的'Reponse.Write(R [I] [「BusinessID」]);'它確實保存了正確的數據,只是由於某種原因,我無法將字符串與其保存的數據進行匹配 – KDOT

+0

也是'sinput'也保持正確的值?您的代碼段不顯示賦值 – Takarii

回答

3

請找到代碼:而不是數據庫中的數據我硬編碼的價值。 希望,它會幫助你。

 string Name = "Test1"; 
     int Id = 1; 
     DataSet ds = new DataSet(); 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("Id",typeof(int)); 
     dt.Columns.Add("Name", typeof(string)); 
     dt.Rows.Add(1,"Test"); 
     dt.Rows.Add(1, "Test1"); 
     DataRow[] r = dt.Select(); 
     int i = 0; //Not Required. 
     while (r.Length>0) 
     { 
      string toTest = r[i]["Name"].ToString(); 
      int toTest1 =Convert.ToInt32(r[i]["Id"]); 
      if (toTest == Name) 
      { 
       Console.WriteLine(toTest); 
      } 
      if (toTest1 == Id) 
      { 
       Console.WriteLine(toTest1); 
      } 
     } 
+0

我明白但BusinessID實際上是諸如AR44(字符串)之類的東西。所以這是行不通的。我已經把它解放了,並會研究你的方法。謝謝! – KDOT

+0

您的意思是說您的businessId爲:pattern of varchar(int + character)。 –

+0

是的,這是模式。我在問題中的方法確實奏效,我在錯誤的地方輸出了比賽結果,因此並沒有注意到它實際上是在工作:愚蠢的我。 – KDOT

相關問題