SqlDataAdapter不会填充DataSet

时间:2012-10-30 12:05:32

标签: c# sql sql-server ado.net

我正在使用VS2012和SQL Server Express 2008.我已经简化了我的连接/查询,试图找出为什么我的DataSet没有被填充。连接成功完成,并且不会引发异常,但适配器未填充DataSet。从中提取的数据库位于同一台PC上,使用localhost\SQLEXPRESS不会更改结果。感谢您的任何意见!

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" />

4 个答案:

答案 0 :(得分:6)

试试这个:

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();

答案 1 :(得分:3)

似乎已经找到了答案,但是,无论如何,我发布了一个提倡使用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);
}

答案 2 :(得分:0)

“HRA.dbo.Questions”是一张真正的桌子吗?

您的connectionstring包含一个值为“HRA”的初始目录,据我所知,SQL应该只包含dbo.Questions。

答案 3 :(得分:0)

检查您在代码的另一部分(例如页面加载事件)中是否没有填充语句。