2015-11-18 2 views
0

теперь у меня есть проблема, и я не могу решить свою проблему. У меня есть локальная база данных .SDF и попытка создать базу данных учетной записи входа, в которой есть много пользователей и пароль, а также ограничение для администратора и пользователей.Найти строку в соответствии с вводом текстового поля

У меня есть класс с именем SQLControl и это код

Imports System.Data.SqlServerCe 

Public Class SQLControl 

#Region "Main Declaration" 

    Dim SQLConn As SqlCeConnection 
    Dim SQLConnString As String = "Data Source=AdmApotikDatabase.sdf" 
    Dim SQLCmd As SqlCeCommand 

    Dim SQLAdapter As SqlCeDataAdapter 
    Dim SQLTable As DataTable 

#End Region 

    Public Sub LoadData(NewCmdSelect As String) 

     Try 
      SQLConn = New SqlCeConnection 
      SQLCmd = New SqlCeCommand 
      SQLConn.ConnectionString = SQLConnString 
      SQLCmd.Connection = SQLConn 
      SQLCmd.CommandText = NewCmdSelect 
      SQLAdapter = New SqlCeDataAdapter(SQLCmd) 
      SQLTable = New DataTable 

      SQLConn.Open() 
      SQLAdapter.Fill(SQLTable) 
      SQLConn.Close() 


     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 
    End Sub 

    Public Sub AddData(NewCmdAdd As String) 
     Try 
      SQLConn = New SqlCeConnection 
      SQLCmd = New SqlCeCommand 
      SQLConn.ConnectionString = SQLConnString 
      SQLCmd.Connection = SQLConn 
      SQLCmd.CommandText = NewCmdAdd 

      SQLConn.Open() 
      SQLCmd.ExecuteNonQuery() 
      SQLConn.Close() 


     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 

    End Sub 

    Public Sub EditData(NewCmdEdit As String) 
     Try 
      SQLConn = New SqlCeConnection 
      SQLCmd = New SqlCeCommand 
      SQLConn.ConnectionString = SQLConnString 
      SQLCmd.Connection = SQLConn 
      SQLCmd.CommandText = NewCmdEdit 

      SQLConn.Open() 
      SQLCmd.ExecuteNonQuery() 
      SQLConn.Close() 


     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 
    End Sub 

    Public Sub FreeCmd(NewCmdFree As String) 
     Try 
      SQLConn = New SqlCeConnection 
      SQLCmd = New SqlCeCommand 
      SQLConn.ConnectionString = SQLConnString 
      SQLCmd.Connection = SQLConn 
      SQLCmd.CommandText = NewCmdFree 

      SQLConn.Open() 
      SQLCmd.ExecuteNonQuery() 
      SQLConn.Close() 


     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 
    End Sub 
End Class 

Теперь я хочу, чтобы попытаться найти строку в соответствии с тем, что я пишу в «txtUsername» и «txtPassword текстовых полей». Вот мой 'pbLogin' событие нажмите:

Public Class LoginForm 
    Dim SQLControl As SQLControl 
    Private Sub pbLogin_Click(sender As Object, e As EventArgs) Handles pbLogin.Click 
     Dim Username As New String 
     Dim Password As New String 
     Dim IsAdmin As New Integer 
     Dim IsUser As New Integer 
     If txtUserName.Text <> "" And txtPassword.Text <> "" Then 

      Dim AdminCmd As String = "SELECT * FROM TabelAkun WHERE " & Username & "='admin' AND " & Password & "='admin' AND " & IsAdmin & "= 1" 
      SQLControl.FreeCmd(AdminCmd) 
      If txtUserName.Text = Username And txtPassword.Text = Password Then 
       SQLControl.LoadData("") 
       MainWindows.pbAbout.Visible = True 
       MainWindows.pbAccount.Visible = True 
       MainWindows.pbDataObat.Visible = True 
       MainWindows.pbDataSuplier.Visible = True 
       MainWindows.pbDataTransaksi.Visible = True 
      End If 
     Else 
      MsgBox("Tidak boleh kosong !") 
     End If 
    End Sub 
End Class 

Это просто результат 'NullReferenceException' в «SQLControl.FreeCmd (AdminCmd) Это моя таблица называется 'TabelAkun' и это ее столбцы:

Dim Username As New String 
    Dim Password As New String 
    Dim IsAdmin As New Integer 
    Dim IsUser As New Integer 

Мне нужно, чтобы кто-то скорректировал мое событие с нажатием кнопки «pbLogin» выше в соответствии с моим классом Sub, спасибо :)

+0

Возможный дубликат [Что такое исключение NullReferenceException и как его исправить?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix- он) – RianBattle

ответ

1

Если вы установили точку останова на этой строке в том виде, в каком она есть, и просмотрите содержимое переменной SQLControl , вы увидите, что он установлен в Nothing, потому что вы никогда не создавали его новый экземпляр.

Изменить свою линию Dim SQLControl As SQLControl на Dim SQLControl As New SQLControl.

+0

Я делаю Dim SQLControl как новый SQLControl, теперь из сообщения об ошибке, которое я получил «Произошла ошибка при разборе запроса. [Номер строки токена = 1, смещение линии токена = 32, токен в ошибке = =], я думаю, что его о моем запросе, любая идея? –

+0

Если ваши столбцы называются 'Username',' Password' и 'IsAdmin', тогда ваш запрос должен выглядеть примерно так: SELECT * FROM TabelAkun WHERE Username = '" & Username & "' AND Password = '' & Password & "'AND IsAdmin =" & IsAdmin'. В целом, вы должны действительно посмотреть на параметризацию своего запроса, есть много замечательных статей, которые помогут вам как на этом сайте, так и в поисковых системах. Вероятно, он исправит любую проблему, связанную с вашим запросом. – RianBattle

+0

спасибо, что все работы –

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