Member 11644373 Ответов: 1

Как получить один идентификатор пользователя, который вошел в систему, и его оценку


public partial class ScorePage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["UserID"]==null)
        {
            Response.Redirect("LoginPage.aspx");
        }
       
        Score_Page();
     
    }
    private void Score_Page()
    {
        string id = Convert.ToString(Session["UserID"]);
        string query = "SELECT UserId, SUM(AnswerResult)Score FROM t_AnswerSheet group by  UserId";
        string connection = "server=sv01;database=testdb;uid=sa;password=****";

        SqlConnection a = new SqlConnection(connection);
        a.Open();
        SqlCommand b = new SqlCommand(query, a);
        DataTable c = new DataTable();
        SqlDataAdapter sda = new SqlDataAdapter(b);
        sda.Fill(c);
        a.Close();
        GridView1.DataSource = c;
        GridView1.DataBind();
    }




string id = Convert.ToString(Session["UserID"]);
       string query = "SELECT UserId, SUM(AnswerResult)Score FROM t_AnswerSheet group by  UserId";
       string connection = "server=*****;database=testdb;uid=***;password=****";






как и в этой части кода, я использую сеанс, чтобы получить UserId из таблицы UserLoging, но не смог получить идентификатор пользователя в команду select, так как всякий раз, когда пользователь входит в систему, он отправляет соответствующий идентификатор на страницу оценки вместе со счетом этого идентификатора ...но здесь они получают все удостоверения личности и свой результат. Поэтому мне нужен просто идентификатор, который получает логин и соответствующий балл к этому идентификатору

Что я уже пробовал:

<pre>public partial class ScorePage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["UserID"]==null)
        {
            Response.Redirect("LoginPage.aspx");
        }
       
        Score_Page();
     
    }
    private void Score_Page()
    {
        string id = Convert.ToString(Session["UserID"]);
        string query = "SELECT UserId, SUM(AnswerResult)Score FROM t_AnswerSheet group by  UserId";
        string connection = "server=***;database=testdb;uid=**;password=*****";

        SqlConnection a = new SqlConnection(connection);
        a.Open();
        SqlCommand b = new SqlCommand(query, a);
        DataTable c = new DataTable();
        SqlDataAdapter sda = new SqlDataAdapter(b);
        sda.Fill(c);
        a.Close();
        GridView1.DataSource = c;
        GridView1.DataBind();
    }

1 Ответов

Рейтинг:
10

OriginalGriff

Нужно добавить предложение where в SQL:

string id = Convert.ToString(Session["UserID"]);
string query = "SELECT UserId, SUM(AnswerResult)Score FROM t_AnswerSheet WHERE UserId=@ID GROUP BY UserId";
string connection = "server=sv01;database=testdb;uid=sa;password=[REDACTED]";

using (SqlConnection con = new SqlConnection(connection))
   {
   con.Open();
   using (SqlCommand cmd = new SqlCommand(query, con))
      {
      cmd.Parameters.AddWithValue("@ID", id);
      ...


Пара других вещей, чтобы сделать вашу жизнь лучше:
1) не жестко кодируйте строки подключения - всегда используйте конфигурационный файл или что-то подобное.
2) Никогда не публикуйте комбинации идентификаторов базы данных и паролей в интернете...
3) Не используйте пользователя SA - создавайте пользователей, которые имеют "достаточные" разрешения для выполнения этой работы - это снижает риски для остальной части вашей базы данных, так как SA может делать все, что угодно!
4) Не используйте односимвольные имена переменных - это делает ваш код более трудным для чтения, а это означает, что в будущем он будет менее ремонтопригоден (и вы потратите много времени, глядя на код, который вы или кто-то другой написали некоторое время назад, и выясняя, как он работает - или нет)
5) Всегда утилизируйте соединения с базой данных, команды, адаптеры и т. д.: Они являются дефицитными ресурсами, и если вы этого не сделаете, ваше приложение может непредсказуемо рухнуть.


Member 11644373

Спасибо... это было полезно