2012-10-30 119 views
0

我正在使用VS2012和SQL Server Express 2008.我煮了我的連接/查詢,試圖找出爲什麼我的DataSet未被填充。連接成功完成,並且不會拋出異常,但適配器不會填充DataSet。這是從同一臺PC上使用localhost\SQLEXPRESS不會改變結果的數據庫。感謝您的任何意見!SqlDataAdapter不填充數據集

SqlConnection questionConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString); 
questionConnection.Open(); 
String sql = "SELECT * FROM HRA.dbo.Questions"; 
SqlDataAdapter adapter = new SqlDataAdapter(); 
DataSet ds = new DataSet(); 
SqlCommand command = new SqlCommand(sql, questionConnection); 
adapter.SelectCommand = command; 
adapter.Fill(ds); 
adapter.Dispose(); 
command.Dispose(); 
questionConnection.Close(); 

連接字符串:

<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=CODING-PC\SQLEXPRESS;Initial Catalog=HRA;User ID=sa; Password= TEST" /> 
+0

檢查數據有沒有ds.Tables ...........你將得到的數據[0] – andy

回答

5

試試這個:

SqlConnection questionConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString); 
questionConnection.Open(); 
DataSet ds = new DataSet(); 
String sql = "SELECT * FROM HRA.dbo.Questions"; 
SqlDataAdapter adapter = new SqlDataAdapter(sql, questionConnection); 
adapter.Fill(ds); 

adapter.Dispose(); 
command.Dispose(); 
questionConnection.Close(); 
+0

這似乎已經工作,謝謝! – Tucker

+2

你能解釋一下這個區別嗎? 「試試這個」並不是很有幫助。 –

+0

沒有必要使用sqlcommand對象填充數據集。 – AnandPhadke

0

是 「HRA.dbo.Questions」 實際的表?

您的連接字符串包含一個值爲「HRA」的初始目錄,據我所知,SQL應該只包含dbo.Questions。

+0

這裏沒有關係。連接字符串屬性只是連接到服務器和數據庫。 – AnandPhadke

2

看來答案已經找到了,不過,我發佈了一個倡導使用using塊的方法,同時也讓.NET框架爲您做好了工作。你的11行的代碼可以在3個被改寫:

DataSet ds = new DataSet(); 
using (var adapter = new SqlDataAdapter("SELECT * FROM HRA.dbo.Questions", ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString)) 
{ 
    adapter.Fill(ds); 
}