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 回答