5
string sql = "Select UserId From User where UserName='Gheorghe'";


SqlCommand cmd=new SqlCommand(sql, connection);
cmd.ExecuteScalar(); //this statement return 0

しかし、私はユーザーのIDを取得したいですか? どうすれば入手できますか?

4

3 に答える 3

6

が必要ですSqlDataReader

SqlDataReader SQL Server データベースから前方のみの行ストリームを読み取る方法を提供します。

サンプル

string sql = "Select UserId From User where UserName='Gheorghe'";

SqlCommand cmd=new SqlCommand(sql, connection);
SqlDataReader rd = cmd.ExecuteReader(); 
if (rd.HasRows) {
  rd.Read(); // read first row
  var userId = rd.GetInt32(0);
}

詳しくは

于 2012-07-29T18:01:58.453 に答える
3

戻り値をキャストするだけです。

int userId = (Int32)cmd.ExecuteScalar();

ただし、クエリが空の結果セットを返す場合、 ExecuteScalarはnullを返すことに注意してください。その場合、上記のコード スニペットはInvalidCastExceptionをスローします。

于 2012-07-29T18:02:31.680 に答える
2
try with select TOP 1 and ExecuteScalar

string sql = "Select TOP 1 UserId From User where UserName='Gheorghe'";
using (SqlConnection conn = new SqlConnection(connString))
{
    conn.Open();
    using(SqlCommand cmd = new SqlCommand(sql, conn))
    {
      var result = (Int32)cmd.ExecuteScalar();
    }
}
于 2012-07-29T18:04:09.203 に答える