2

から返される値に問題があります。次のSqlCommandコードがあります。

string sqlSelect = "Select TOP 1 Quotation.SentToSupp as SentToSupp FROM Quotation JOIN Notifications ON Quotation.QuotationId = QuotationID ";

SqlCommand Comm = new SqlCommand(sqlSelect, this.Connection);

sqlSelectクエリは最初のDateTime値を選択します。を呼び出すときにSqlCommand、この値を取得したい (1 つの値のみ)。クエリと接続を追加します。

DateTimeしかし、値を取得する方法がわかりません...次のようなものを使用する必要がありますExecuteReaderか?

前もって感謝します!!

4

2 に答える 2

8

ExecuteReader動作しますが、より多くのオブジェクトとコードが必要です - ( SqlDataReader、 Read および Extract 値の呼び出し)。ExecuteScalar代わりに、単にオブジェクトのメソッドを使用できSqlCommandます (結果セットの最初の行の最初の列のみを返します)。

string sqlSelect = "Select TOP 1 Quotation.SentToSupp as SentToSupp FROM ....";
SqlCommand Comm = new SqlCommand(sqlSelect, this.Connection);
object result = Comm.ExecuteScalar();
if(result != null)
   DateTime dtResult = Convert.ToDateTime(result);

何らかの理由で返された結果にレコードがない場合、 が値ExecuteScalarを返す可能性があることに注意してください。null

于 2013-04-05T11:05:07.850 に答える
3

SqlCommand.ExecuteScalar メソッドを使用 -クエリを実行し、クエリによって返された結果セットの最初の行の最初の列を返します。追加の列または行は無視されます。

于 2013-04-05T11:01:50.027 に答える