0

現在のログインユーザーに応じてデータベースから取得したデータを実際にどのように表示しますか?この方法を使用しましたが、実際には機能していません。どこが間違っているのですか?

私の.csコード:

 int selectedRow = GridView1.SelectedIndex;
    GridViewRow row = GridView1.Rows[selectedRow];
    int UserId = Convert.ToInt32(row.Cells[0].Text);

    MembershipUser currentUser = Membership.GetUser();
    Guid currentUserId = (Guid)currentUser.ProviderUserKey;

    string strConnectionString = ConfigurationManager.ConnectionStrings["ASPNETDBConnectionString1"].ConnectionString;

    SqlConnection myConnect = new SqlConnection(strConnectionString);

    string strCommandText = "SELECT date, starttime, endtime, planner FROM bookings WHERE UserId =@UserId";
    SqlCommand cmd = new SqlCommand(strCommandText, myConnect);

    myConnect.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    cmd.Parameters.AddWithValue("@UserId", UserId);

    reader.Close();
    myConnect.Close();
4

2 に答える 2

1

あなたは線を逆にする必要があります:

       myConnect.Open();
  cmd.Parameters.AddWithValue("@UserId", UserId);
    SqlDataReader reader = cmd.ExecuteReader();

;-)

于 2012-08-05T10:48:49.903 に答える
0

明確にするために、UserIdパラメーターを追加する前にDataReaderを実行しています。実際、コマンドオブジェクトが完全に定義されるまで、接続を開かないことをお勧めします。

次のようになります。

string strConnectionString = ConfigurationManager.ConnectionStrings["ASPNETDBConnectionString1"].ConnectionString;

    SqlConnection myConnect = new SqlConnection(strConnectionString);

    string strCommandText = "SELECT date, starttime, endtime, planner FROM bookings WHERE UserId =@UserId";
    SqlCommand cmd = new SqlCommand(strCommandText, myConnect);
  cmd.Parameters.AddWithValue("@UserId", UserId);

    myConnect.Open();
    SqlDataReader reader = cmd.ExecuteReader();  
    myGridView.DataSource = reader;
    myGridView.DataBind();

    reader.Close();
    myConnect.Close();
于 2012-08-05T15:35:01.767 に答える