2014-10-07 12 views
-4

Я добился определенного прогресса в отношении приложения, которое я создаю, благодаря помощи из моего предыдущего вопроса here. На данный момент я работаю над функцией «создать пользователя». Я не могу понять, как проверить, является ли имя пользователя уже в базе данных. Пожалуйста, просмотрите код и сообщите мне, что я делаю неправильно. Очевидно, это только раздел, в котором мне нужна помощь.Проверка наличия имени пользователя в моей базе данных Access

ElseIf UserNameTextBox.Text = "SELECT * FROM Users WHERE Username = '" Then 

     MsgBox("Username Already Taken!") 
     Dim NEWUSER As New NewUser 
     NEWUSER.Show() 
     Me.Hide() 
+0

спросить себя: «Что я сравниваю?» Это предложение 'where' является неполным – Barranka

+0

Я просто пересматриваю визуальную студию. im довольно потерял, куда идти оттуда. –

+0

, так что если ваше имя пользователяTextbox равно вашей строке sql, вы бросаете эту ошибку? вы уверены, что скопировали/ввели правильный код? – Icepickle

ответ

1

Поскольку это скорее «как делать-я-проследовать-вопрос», рассмотрим следующие

  • Типы пользователей в его имя пользователя в вашем текстовом поле и нажимает «Create User» button
  • Программа принимает значение из текстового поля и запускает запрос в базе данных, который проверяет, находится ли пользователь уже в db
  • , если он есть, вы покажете ошибку на своем экране или предложите новое имя пользователя, основанное на имени пользователя, введенном пользователем, которое вы подтвердили как новый, возможно, правильное значение в случае
  • это не так, вы создаете пользователя, и пусть он знает, что его счет был создан

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

  • как я запрос к базе данных, и использовать возвращаемое значение
  • как я добавить имя пользователя для этого запроса, чтобы сделать SQL инъекции безопасным
  • базовые знания программирования логики также может помочь (хотя, вы, кажется, сделал это далеко ...)

Так, в конце концов, сводится к тому:

Dim strUsername As String = usernametextbox.text 
Dim boolUsernameExists as Boolean = False 

If String.IsNullOrEmpty(strUsername) Then 
    ' do not allow empty usernames 
    Return 
End If 

Using dbConnection as OleDbConnection = new OleDbConnection("your-connection-string") 
    dbConnection.Open() 
    Using dbCommand as OleDbCommand = new OleDbCommand("select count(username) from users where username like ?", dbConnection) 
     dbCommand.Parameters.AddWithValue("@p1", strUsername) 
     Dim result As Integer = DirectCast(dbCommand.ExecuteScalar(), Integer) 
     If result > 0 Then 
      boolUsernameExists = true 
     End If 
    End Using 
    dbConnection.Close() 
End Using 

If boolUsernameExists Then 
    ' throw error, or do some other action 
    ... 
    ' and return 
    Return 
End If 
' If you end up here, your user doesn't exist, and it safe to create the new username 

Я хотел бы отметить, что это было написано без редактора, и там могут быть некоторые ошибки, хотя, как вы отметили, это чисто как к проследовать-вопрос

+0

, этот код дает мне головную боль. > не определен для datareader и integer. –

+0

Не могли бы вы быть более ясными в отношении того, что не работает? Как я указал в своем сообщении, я просто набрал его как я, хотя это могло быть, я не подтвердил свой синтаксис vb.net – Icepickle

+0

Dim result As Integer = DirectCast (dbCommand.ExecuteReader(), Integer) .. его предоставление isure о целом. –

0

cn.Open()

Dim dr As OleDbDataReader 
    Dim cmd1 As New OleDbCommand("Select username from login where username= '" & TextBox2.Text & "'", cn) 
    dr = cmd1.ExecuteReader 
    If dr.Read = True Then 
     MsgBox("Please insert another username") 
    Else 
     If TextBox3.Text = TextBox4.Text Then 
      ' cn.Open() 
      Dim cmd As New OleDbCommand("insert into login values('" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "')", cn) 
      cmd.ExecuteNonQuery() 
      MsgBox("sign up Successfully") 
      ' cn.Close() 
      TextBox2.Clear() 
      TextBox3.Clear() 
      TextBox4.Clear() 
      Form1.Show() 
      Me.Hide() 
     Else 
      MsgBox("Please insert same password & Confirm Password") 
     End If 

    End If 

    cn.Close() 
+0

Его простая логика для проверки Как проверить имя пользователя существует или нет и форма регистрации ................. из ... connection open к соединению близко. –

0
Imports System.Data.SqlClient 
Imports System.Data 


Public Class Forgetpassword 
    Dim cn As New SqlConnection("Data Source=DESKTOP-UIT47KQ;Initial Catalog=vishakha;Integrated Security=True") 
    Dim result As String 


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     cn.Open() 
     Dim cmd As New SqlCommand("Select answer,passw from login where squestion = '" & Label4.Text & "'", cn) 
     Dim dr As SqlDataReader 
     dr = cmd.ExecuteReader 
     If dr.Read = True Then 
      If TextBox1.Text = dr.Item("answer").ToString Then 
       Label1.Text = dr.Item("passw").ToString 
      Else 
       MsgBox("Please Enter Right Answer") 
      End If 
     Else 

     End If 
     cn.Close() 
    End Sub 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
     cn.Open() 
     Dim cmd As New SqlCommand("select squestion from login where uid1='" & txtusername.Text & "'", cn) 
     Dim dr As SqlDataReader 
     dr = cmd.ExecuteReader 
     If dr.Read = True Then 
      Label4.Text = dr.Item("squestion").ToString 

     Else 
      MsgBox("Please Enter Right Username") 
     End If`enter code here` 
     cn.Close() 
    End Sub 



    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 
     Form1.Show() 
     Me.Hide() 

    End Sub 

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click 


    End Sub 
End Class 
+0

Давать рабочий код отлично, но, пожалуйста, укажите описание того, что он делает. – Marc