2

我正在使用 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

4 回答 4

7

试试这个:

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();
于 2012-10-30T12:09:05.990 回答
7

似乎已经找到了答案,但是,无论如何我都会发布一个来提倡使用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);
}
于 2012-10-30T12:28:41.143 回答
0

“HRA.dbo.Questions”是一个实际的表吗?

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

于 2012-10-30T12:10:18.343 回答
0

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

于 2021-04-15T06:10:22.730 回答