2014-10-06 20 views
0

Итак, у нас есть форма входа в систему, в которой программа должна определить, в какую позицию назначен пользователь. (позиция выбора выполняется во время регистрации, поэтому позиция пользователя сохраняется в базе данных уже). Предположительно, для каждой позиции есть отдельная форма.Как получить значение из базы данных в запросе mysql?

Dim username As String = txtUser.Text 
Dim password As String = txtPass.Text 

//check if username and password exist 
checklogin(username, password) 
     If RS.EOF Then 
      MessageBox.Show("Mismatch Entry", "confirmation Message", MessageBoxButtons.OKCancel, MessageBoxIcon.Error) 
      txtUser.Clear() 
      txtUser.Focus() 
     Else 
      Me.Hide() 
      //problem starts here 
      checkposition() 
      If (position == "Officer") 
       OfficerForm.Show() 
      Elseif (position == "Head") 
       HeadForm.Show() 
      Elseif (position == "Admin") 
       AdminForm.Show() 
      Else 
      // dialog box 
     End If 
    End Sub 

Способ checkposition:

Public Sub checkpositon(ByVal username As String, ByVal positon As String) 
    RS = CN.Execute("SELECT position FROM admin WHERE uName = '" & username & "' ") 
End Sub 

Я знаю, что есть еще что-то отсутствует в коде. и я знаю, что с ним не так. Как будет восстановлена ​​позиция в базе данных в форме входа? ПОМОГИТЕ :( Спасибо!

+3

вы уязвимы для атак SQL-инъекций Всегда использовать SQL-параметры вместо конкатенации Считают, что '' username' является '; Капля таблица администратора;.. - -' –

+0

Что вы имеете в виду? –

+0

[Sql Injection Explained] (http://stackoverflow.com/questions/332365/how-do-the-sql-injection-from-the-bobby-tables-xkcd-comic-work) – Steve

ответ

0

второй параметр функции checkposition() должна быть названа «позиция» в смену «positon». Кроме того, вам нужно присвоить значение позиции, например

position = RS.Fields.Item(0); 

И вы должны бежать значение имени пользователя, а

+0

, на какую часть позиции вы имеете в виду? Я знаю, что мне нужно использовать RS. Но я не знаю, как это сделать. –

+0

CN.Execute вернет набор записей (RS). Я думаю, вы ожидаете ровно один результат, иначе вы бы поместили чек на RS.EOF после выполнения вашего запроса. Я немного поменял свой ответ – niekoost

+0

О, я понимаю сейчас. Спасибо ^^ –

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