2014-02-27 50 views
1

我使用VS與C#創建搜索功能。此功能將使用文本框,以便用戶可以輸入索賠編號和搜索按鈕,以便將來自該聲明的數據顯示在另一組文本框中。C#搜索按鈕代碼問題。

問題是,在我輸入索賠號並單擊按鈕後,沒有數據顯示,並且在運行時沒有出現錯誤。

我也跟着在這裏其他的問題,但到目前爲止,我還沒有能夠得到它的工作,這裏是我的代碼一些建議:

 SqlConnection con = new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SISProductionDB;Data Source=Servername"); 
     DataTable dt = new DataTable(); 
     DataSet ds = new DataSet(); 
     SqlDataReader myReader = null; 

     con.Open();   

     SqlCommand myCommand = new SqlCommand("SELECT * FROM Claim WHERE ClaimNumber = '%@ClaimNumber%'", con); 
     myCommand.Parameters.AddWithValue("@ClaimNumber", NumQuerellaTxt.Text); 
     SqlDataAdapter SDA = new SqlDataAdapter(myCommand.CommandText, con); 

     myReader = myCommand.ExecuteReader(); 
     myReader.Read(); 

     while (myReader.Read()) 
     { 
      ClaseQuerellaTxt.Text = (myReader["ClaimID"].ToString()); 
      TipoQuerellaTxt.Text = (myReader["ClaimTypeID"].ToString()); 
      FuenteQuerellaTxt.Text = (myReader["ClaimTypeID"].ToString()); 
      EstatusQuerellaTxt.Text = (myReader["ClaimTypeID"].ToString()); 
      OficialAtiendeTxt.Text = (myReader["ClaimTypeID"].ToString()); 
      OficialInvestigaTxt.Text = (myReader["ClaimTypeID"].ToString()); 
      QuerellaTxt.Text = (myReader["ClaimTypeID"].ToString()); 
      FechaQuerellaTxt.Text = (myReader["ClaimTypeID"].ToString()); 
      FechaIncidenteTxt.Text = (myReader["ClaimTypeID"].ToString()); 
      HoraIncidenteTxt.Text = (myReader["ClaimTypeID"].ToString()); 
      AbogadoAtiendeTxt.Text = (myReader["ClaimTypeID"].ToString()); 
      FechaVistaTxt.Text = (myReader["ClaimTypeID"].ToString()); 
      HoraVistaTxt.Text = (myReader["ClaimTypeID"].ToString()); 
      SalaVistaTxt.Text = (myReader["ClaimTypeID"].ToString()); 
     } 

     con.Close(); 
+0

這是用的,而不是設置裏面的代碼查詢存儲過程中一個很好的做法。 –

+0

通常,select *只能用於即席查詢,如果有人更改表結構,查詢將會中斷。最好明確指定你想要的列 – Liath

+0

我也建議你使用一個用於你的連接和datareader。如果出現錯誤,您的連接可能無法處理 – Liath

回答

8

在您閱讀下面的解決方案,你應該嘗試使用調試器並自己發現問題。調試是您需要開發的基本技能。你應該能夠找到像這樣的錯誤。

答:您跳過第一行:

myReader.Read(); 

while (myReader.Read()) 
+0

感謝您提供有關錯誤的提示,我設法解決了這個問題,遺憾的是這並沒有解決我的問題,程序仍然不會在文本框中顯示任何數據建議?我會很感激。 – user3361031

+0

使用調試器查明有多少行被讀取。 (您會發現數字爲零。)=>您的查詢必須有錯誤。在SSMS中運行查詢。你會看到這裏沒有行也被返回。現在你知道你的C#應用​​程序沒有錯。只是查詢是。更簡單的問題來解決。 – usr