私が取り組んでいるプロジェクトの新しいアプローチを試みており、Access データベースについて学び始めたところです。私はVB.netを使用していますが、私の質問は次のとおりです。データベースのテーブルにレコードが存在するかどうかを確認するにはどうすればよいですか。理解できたと思っていたのですが、そうではありません。ログインを作成していますが、入力したユーザー名とデータベースの内容を比較する前に、入力したユーザー名が存在するかどうかを確認したいと考えています。これを行う方法について多くの質問があります...しかし、VB.netおよびMS Accessについてはそうではありません
これが私のコードです:
Imports System.Data.OleDb
Public Class LoginForm1
Dim provider As String
Dim dataFile As String
Dim connString As String
Public myConnection As OleDbConnection = New OleDbConnection
Public dr As OleDbDataReader
Dim Errors As String
Public Sub AccessAccountDatabase()
provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
dataFile = "C:\Users\Richard\Documents\Visual Studio 2010\Projects\CybSol Journal Database\CybSol Journal Database\cgi-bin\Data.mdb"
connString = provider & dataFile
myConnection.ConnectionString = connString
Errors = ""
Try
myConnection.Open()
Dim str As String
str = "SELECT * FROM Accounts WHERE Username='" & UsernameTxt.Text & "' AND Password='" & PasswordTxt.Text & "'"
Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
dr = cmd.ExecuteReader
dr.Read()
If UsernameTxt.Text = dr("Username").ToString AndAlso PasswordTxt.Text = dr("Password").ToString Then
Dim Welcome As String = "SELECT * FROM Accounts WHERE Real_Name=" & "Username"
MsgBox("Welcome back " & dr("Real_Name") & "!")
Else
MsgBox("Login Failure")
End If
myConnection.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Private Sub OkayBtn_Click(sender As System.Object, e As System.EventArgs) Handles OkayBtn.Click
AccessAccountDatabase()
End Sub
End Class
だから今私の質問は...正しい情報(データベースに存在する正しいユーザー名とパスワード)を入力すると、ようこそとすべてが表示されるため、データベースにレコードが存在するかどうかを確認するにはどうすればよいですか。ただし、間違ったユーザー名やパスワードを入力すると機能しません。「Try Catch」ステートメントがないと、プログラムはフリーズするだけです。try catch を使用すると、次のように記述されます。
System.InvalidOperationException: No data exists for the row/column.
at System.Data.OleDb.OleDbDataReader.DoValueCheck(Int32 ordinal)
at System.Data.OleDb.OleDbDataReader.GetValue(Int32 ordinal)
at System.Data.OleDb.OleDbDataReader.get_Item(String name)
at CybSol_Journal_Database.LoginForm1.AccessAccountDatabase() in c:\users\richard\documents\visual studio 2010\Projects\CybSol Journal Database\CybSol Journal Database\LoginForm1.vb:line 36
追加情報: 36 行目は次のとおりです。If UsernameTxt.Text = dr("Username").ToString AndAlso PasswordTxt.Text = dr("Password").ToString Then