0

数日前にこれを投稿しましたグリッドビューに挿入される前に行の値を知る方法は? そして私はこの答えを得ました

SqlCommand cmdEvent = new SqlCommand("SELECT COUNT(date) FROM patients WHERE date= '2012/02/23'", yourSqlConnection);
object myCount;
if (yourSqlConnection.State == ConnectionState.Closed){ yourSqlConnection.Open(); }
myCount = cmdEvent.ExecuteScalar();
if (yourSqlConnection.State == ConnectionState.Open){ yourSqlConnection.Close(); }

if (myCount != null)
{
  if ((int)myCount >= 10)
  {
    // Logic here e.g myLabel.Text = "You have reached your maximum of 10 visits!";
    return;
  }
}

しかし、挿入する前に1行の値は必要ありません。代わりに、2行の値を知る必要があり、その方法がわかりません。ログインしようとしていますが、セッションを一意にするためにユーザーのIDが必要ですが、そのクエリがtrueを返すかどうかも検証する必要があり、次のようにしました:

comando = new SqlCommand("SELECT user_name FROM login WHERE user_name=@user AND pass=@pass", conexion);
comando.Parameters.AddWithValue("@pass", Upass);
comando.Parameters.AddWithValue("@user", user);
object check_coincidence = comando.ExecuteScalar();

if ((string)check_coincidence == user)
{
     Session["USER"] = check_coincidence;
     Response.Redirect("someURL")
}

しかし、セッションを一意にするためにユーザーの ID を取得する方法がわかりません。つまり、その値を新しいセッションとして取得します。

4

1 に答える 1

1

クエリからより多くの結果を取得するには、SqlReaderを使用する必要があります。

comando = new SqlCommand("SELECT user_name, user_id FROM login WHERE user_name=@user AND pass=@pass", conexion);
comando.Parameters.AddWithValue("@pass", Upass);
comando.Parameters.AddWithValue("@user", user);

 SqlDataReader reader = commando.ExecuteReader();
        while (reader.Read())
        {
            var userName = Convert.ToString(reader["user_name"]);
            var userId = Convert.ToInt32(reader["user_id"]); 
        }

これに関するいくつかのチュートリアルに従うことをお勧めします。SQLクラスを理解するのに役立ちます。たとえば、これを確認してください:http: //csharp-station.com/Tutorials/AdoDotNet/Lesson03.aspx

于 2013-02-25T21:56:29.120 に答える