2012-10-30 120 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); 
}