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

答えはすでに見つかっているようですが、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 に答える
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 に答える
0

「HRA.dbo.Questions」は実際のテーブルですか?

接続文字列には、値が「HRA」の初期カタログが含まれており、私の知る限り、SQL には dbo.Questions のみが含まれている必要があります。

于 2012-10-30T12:10:18.343 に答える