- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我的 OleDb 访问数据库连接正确地计算了数据库表中的行(条目)数,但是当涉及到使用 for 循环读取其中一个字段的每个实例时,我得到的错误是在获取表中第一个条目的用户名 (teacher_id/student_id) 使用 databaseReader,databaseReader(1) 实例中没有数据。
错误:
System.Data.dll 中出现类型为“System.InvalidOperationException”的未处理异常附加信息:行/列不存在数据。
(顺便说一句,我知道还没有密码验证)
Imports System.Data
Imports System.Data.OleDb
Public Class LoginForm
Const databaseLocation As String = "C:\Users\Patrick\Documents"
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OKButton.Click
Dim enteredUsername As String = UsernameTextBox.Text
Dim enteredPassword As String = PasswordTextBox.Text
Login(enteredUsername, enteredPassword)
End Sub
Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CancelButton.Click
Me.Close()
End Sub
Sub Login(ByRef username As String, ByRef password As String)
Dim isUsernameVerified As Boolean
'This is the admin's username and password, and should not be shown to any other users
If username = "adminentry" And password = "iamanadmin" Then
MenuForm.Show()
Me.Close()
End If
isUsernameVerified = VerifyUsernameAndPassword(username, password)
If isUsernameVerified = True Then
MenuForm.Show()
Me.Close()
Else
LoginComboBox.Text = "Username or password not found"
End If
End Sub
Function VerifyUsernameAndPassword(ByRef usernameForVerification As String, ByRef passwordForVerification As String)
'This string tells the connection where the database is, and which provider to use
Const connectionString As String = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & databaseLocation & "\ProjectDatabase.accdb")
Dim sqlQuery As String
Dim verified As Boolean
'database connection required in order to verify username and password inputs
Using connectionToDatabase As New OleDbConnection(connectionString)
Dim numberOfEntries As Integer
'Open the database connection
connectionToDatabase.Open()
If LoginComboBox.SelectedItem = "Staff login" Then
'sql code for counting number of staff ID's
sqlQuery = "SELECT COUNT(*) AS sqlQuery FROM Teacher_Table"
Else
'sql code for counting number of student ID's
sqlQuery = "SELECT COUNT(*) AS sqlQuery FROM Student_Table"
End If
Dim getNumberOfEntriesCommand As New OleDbCommand(sqlQuery, connectionToDatabase)
'executes counting sql code
numberOfEntries = getNumberOfEntriesCommand.ExecuteScalar
If LoginComboBox.SelectedItem = "Staff login" Then
'sql code for getting staff ID's
sqlQuery = "SELECT teacher_id FROM Teacher_Table"
Else
'sql code for getting student ID's
sqlQuery = "SELECT student_id FROM Student_Table"
End If
Dim loginVerificationCommand As New OleDbCommand(sqlQuery, connectionToDatabase)
'executes verification sql code
Dim databaseReader As OleDbDataReader = loginVerificationCommand.ExecuteReader()
For i = 1 To numberOfEntries
If databaseReader(i) = usernameForVerification Then
verified = True
End If
Next
End Using
If verified = True Then
Return True
Else
Return False
End If
End Function
End Class
最佳答案
这是数据读取器的错误模型。数据读取器公开当前行,并允许您在行中移动。 databaseReader(i)
将引用当前行中的字段 i,而不是您的代码认为的第 i 行。
使用数据阅读器的标准方法是
Do While databaseReader.Read
'Do something with the current row
If databaseReader(0) = usernameForVerification Then
verified = True
Exit Loop
End If
Loop
databaseReader.Close
(我没有使用过 VB.Net,如果语法有误,请见谅)
您最好构建包含要搜索的值的查询。例如:
Select teacher_id From Teacher_Table Where teacher_id = ?
您需要了解参数绑定(bind)才能使用它。
关于sql - OleDbDataReader 说它正在读取的表中没有数据 (VB.NET),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19344719/
我正在编写一个 JS 程序,我有一个条件可以根据输入进行一些算术运算。如果我遇到操作类型为“add”,我需要将两个值相加;如果我得到“times”作为我的运算符值,我需要相乘。 我尝试使用基本的 if
我正在编写一个仅作为查看器的应用程序 - 无需创建、无需编辑、无需保存。 显然,那么,不会有自动保存,但是还有什么其他东西可以从 autosavesInPlace 返回 YES 改变世界,从而对观看者
Azure 开始出现以下错误: Unsupported token. Unable to initialize the authorization context. 每当我尝试更改我的应用程序时,我都
当我编写 out.println() 时,Eclipse 提示 out 无法解析。 我导入了 java.io.* 和其他 servlet 包。 最佳答案 只是在黑暗中拍摄,我认为这就是您正在寻找的出路
Azure 开始出现以下错误: Unsupported token. Unable to initialize the authorization context. 每当我尝试更改我的应用程序时,我都
是否可以执行类似的操作来检查 radio 表单是否未选中: if !($(this).find("input:checked")) {} 正确的语法是什么? 最佳答案 试试这个: $(this).fi
我正在尝试从表中选择行,其中 date 列值等于澳大利亚悉尼的当前日期 (UTC+10h)。服务器位于悉尼,因此我想使用 SYSDATETIME()。这是我的查询: SELECT * FROM dat
我听说 JavaScript 实际上并不像其他语言那样“指向”内存中的值(或对象,因为在 JS 中一切都是对象)。相反,JS 变量引用内存中的其他值/对象。这是真的?指向和引用之间的语义区别是什么?
我的计算机科学类(class)有一项作业,其中要求读取包含多个测试分数的文件,并要求我对它们进行求和并求平均值。虽然求和和求平均值很容易,但我在读取文件时遇到问题。老师说用这个语法 Scanner s
Java 的 XML 解析器似乎认为我的 XML 文档在根元素之后的格式不正确。但我已经用几种工具验证了它,但他们都不同意。这可能是我的代码错误,而不是文档本身的错误。如果你们能给我提供任何帮助,我将
根据这份文件: http://www.stroustrup.com/terminology.pdf l 值具有同一性且不可移动。 公关值是可移动的,但没有身份。 x 值具有同一性并且是可移动的。 关于
这个问题在这里已经有了答案: What does "atomic" mean in programming? (7 个答案) 关闭 5 年前。 我正在阅读 MongoDB 的 documentati
在 PHP 和 MySQL 中有没有一种方法能够比较 2 个不同的数组(列表)变量并说出有多少项是相同的 例如, $array1 = "hello, bye, google, laptop, yes"
本文来自 Effective Java Programs that use the int enum pattern are brittle. Because int enums are compil
C++ 中有一些特性是类型安全的,而另一些则不是。 C++ 类型安全示例: char c = 'a'; int *p = &c; // this is not allowed (compiler
我有一个 CS 课的作业,它说要读取一个包含多个测试分数的文件,并要求我对它们求和并取平均值。虽然求和和平均很容易,但我在读取文件时遇到了问题。老师说要用这个语法 Scanner scores = n
嗯.. 有时,PyDev 会说“ Unresolved 导入错误”。 在我的环境中 Python2.6.6 Eclipse3.7 PyDev2.2.2 错误是。 > Unresolved import
我正在向服务器发送请求,服务器正在处理请求并做出响应。但是在我的应用程序中,我收到了: Error Domain=NSURLErrorDomain Code=-1017 "cannot parse r
在我最近的一次讨论中,有人告诉我这样说是不正确的,因为 Ajax 已经是 Javascript。 上下文: “我如何在网页中 blablababal,这样它就不必刷新页面” 我的回答: “使用 Jav
下午好。 我一直在尝试使用 ffmpeg 将 .mpeg 拆分为一系列 .jpeg 图像。请注意,这是指定 here 的逆问题,但我面临的问题与该线程的作者面临的问题不同。 具体来说,我已经在我的 f
我是一名优秀的程序员,十分优秀!