2016-01-09 1 views
-2

HI ~ У меня есть вопрос о том, как извлекать данные из конкретной учетной записи .. Например, есть 4 сообщения об ошибке существует в базе данныхC# beginner - как получить данные с указанной учетной записью?

2 ошибки сообщает о присвоенных разработчике а, еще 2 ошибки отчет назначены разработчику b.

Если я вхожу в систему как разработчик a, я могу просмотреть только 2 ошибки, назначенные мне. как я могу установить код?

(PS: ТНХ для многих ответов с указал, что мое кодирование испытывает риск с инъекцией SQL, я буду редактировать его после окончания моего назначения :).)

вот мое кодирование:

private void bug_view_Click(object sender, EventArgs e) 
    { 
     dataGridView1.Visible = true; 
     bug_info_panel.Visible = true; 
     string constring = "datasource=localhost;username=root;password="; 
     MySqlConnection conDataBase = new MySqlConnection(constring); 
     MySqlCommand cmdDataBase = new MySqlCommand("select * from bug.bug where Assigned = '';", conDataBase); 

     try 
     { 
      dataGridView1.Visible = true; 
      MySqlDataAdapter sda = new MySqlDataAdapter(); 
      sda.SelectCommand = cmdDataBase; 
      DataTable dbdataset = new DataTable(); 
      sda.Fill(dbdataset); 
      BindingSource bSource = new BindingSource(); 

      bSource.DataSource = dbdataset; 
      dataGridView1.DataSource = bSource; 
      sda.Update(dbdataset); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

И вот мой Войти форма кодирования enter code here:

try 
     { 
      bool IsAdminUser = false; 
      bool IsDeveloper = false; 
      string myConnection = "datasource=localhost;username=root;password="; 
      MySqlConnection myConn = new MySqlConnection(myConnection); 
      MySqlCommand SelectCommand = new MySqlCommand("select * from logintable.account where id='" + this.username_txt.Text + "' and password='" + this.password_txt.Text + "' ;", myConn); 

      MySqlDataReader myReader; 
      myConn.Open(); 
      myReader = SelectCommand.ExecuteReader(); 
      int count = 0; 
      while (myReader.Read()) 
      { 
       count = count + 1; 
       IsAdminUser = myReader["permissions"].ToString().Equals("Admin"); 
       IsDeveloper = myReader["permissions"].ToString().Equals("Developer"); 
      } 

      if (count == 1 && IsDeveloper == true) 
      { 
       MessageBox.Show("You are logged in as Developer "); 
       this.Hide(); 
       DeveloperForm developform = new DeveloperForm(); 
       developform.ShowDialog(); 
      } 

      else if (count == 1 && IsAdminUser == true) 
      { 
       MessageBox.Show("You are logged in as administrator "); 
       this.Hide(); 
       AdminForm adminForm = new AdminForm(); 
       adminForm.ShowDialog(); 
      } 

      else if (count == 1) 
      { 
       MessageBox.Show("You are logged in"); 
       this.Hide(); 
       UserForm userform = new UserForm(); 
       userform.ShowDialog(); 
      } 

      else 
       MessageBox.Show("Username or Password is not correct ..Please try again"); 
      myConn.Close(); 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

    } 
+0

никогда не используйте конкатенации для создания SQL: вы оставьте себя открытым для SQL-инъекций. Параметры * проще *, так как вам не нужно думать о значениях кодировки для базы данных. – Richard

ответ

0

Я вижу вы не используете рекомендуемый метод проверки подлинности. В любом случае вы можете добиться того, чего хотите, используя переменные Application/Session. После того как пользователь вошел в систему, создать приложения/переменную Session и Id магазин пользователя в том, как это:

Application["user_id"]=myReader["Id"]; 

или

Session["user_id"]=myReader["Id"]; 

Затем вы можете использовать это значение для выборки отчет об ошибке, как

MySqlCommand cmdDataBase = new MySqlCommand("select * from bug.bug where Assigned = @user;", conDataBase); 
cmdDataBase.Parameters.AddWithValue("@user",Application["user_id"]) 

Надеется, что это помогает

Смежные вопросы