1

以下のコーディングは実行されますが、値は画面に表示されませんでした

 protected void Button1_Click(object sender, EventArgs e)
    {
        if (CheckBox1.Checked)
        {

        string OIMSquery = "SELECT COUNT(name) AS PolicySold FROM TestDate WHERE name='divi'";
        SqlCommand OIMScmd = new SqlCommand(OIMSquery, OIMS_01);
        OIMS_01.Open();
        OIMScmd.ExecuteNonQuery();
        OIMS_01.Close();      

        }       
   }
4

7 に答える 7

3

次のようにExectueScalerを呼び出す必要があります

int count = (int) OIMScmd.ExecuteScalar();

実行スカラー

クエリを実行し、クエリによって返された結果セットの最初の行の最初の列を返します。追加の列または行は無視されます。

于 2013-04-04T06:19:07.263 に答える
1

ExecuteScalar()単一の値を取得するために使用します

string OIMSquery = "SELECT COUNT(name) AS PolicySold FROM TestDate WHERE name='divi'";
SqlCommand OIMScmd = new SqlCommand(OIMSquery, OIMS_01);
OIMS_01.Open();
int _result = Convert.ToInt32(OIMScmd.ExecuteScalar());
OIMS_01.Close(); 
于 2013-04-04T06:19:11.157 に答える
1

クエリがあります。したがって、この呼び出しは不適切です。

OIMScmd.ExecuteNonQuery();

代わりに、次を使用する必要がありますExecuteScalar()

int count = (int) OIMScmd.ExecuteScalar();

long(それが aではなくa を返す可能性がありますint- 私はすぐにはわかりません。)

さらに、usingステートメントを使用しSqlCommandて、操作ごとに新しい接続を作成する必要があります。

using (var connection = new SqlConnection(...))
{
    connection.Open();
    using (var command = new SqlCommand(query, connection))
    {
        int count = (int) command.ExecuteScalar();
        // Now use the count
    }
}

また、これがどのような種類のアプリであるかも明確ではありません。ローカル GUI (WinForms または WPF) にある場合は、UI スレッドでデータベース アクセスを実行するべきではありません。データベースへのアクセスが発生している間、UI はフリーズします。(これが Web アプリケーション内にある場合は、毎回新しいデータベース接続を作成することがさらに重要です... 2 つの別々の要求が同時に同じ接続を使用しようとするのは望ましくありません。)

于 2013-04-04T06:19:16.710 に答える
0

SqlCommand.ExecuteScalar()whichの代わりに使用すると、ExecuteNonQuery()何も返されません。

于 2013-04-04T06:19:33.690 に答える
0

使用する必要があります: ExecuteScalar()

クエリを実行し、クエリによって返された結果セットの最初の行の最初の列を返します。追加の列または行は無視されます。

int result = Convert.ToInt32(OIMScmd.ExecuteScalar());

それ以外の

OIMScmd.ExecuteNonQuery();
于 2013-04-04T06:19:42.660 に答える
0

SqlCommand.ExecuteScalarメソッドを使用できます。

クエリを実行し、クエリによって返された結果セットの最初の行の最初の列を返します。追加の列または行は無視されます。

int i = (int)OIMScmd.ExecuteScalar();

このメソッドは を返すためobject、暗黙的に に変換する必要がありますint

 using (SqlConnection OIMS_01 = new SqlConnection(connString))
 {
      SqlCommand OIMScmd = new SqlCommand(OIMSquery, OIMS_01);
      try
      {
          OIMS_01.Open();
          int i = (int)OIMScmd.ExecuteScalar();
      }
      catch (Exception ex)
      {
          Console.WriteLine(ex.Message);
      }
 }
于 2013-04-04T06:19:59.177 に答える
0

クラスOIMScmd.ExecuteReader();のオブジェクトを返すメソッドを試してから、そこから値を読み取ります。SqlDataReader

また

使用しConvert.ToInt32(OIMScmd.ExecuteScalar())て、値を出力します。

于 2013-04-04T06:28:58.617 に答える