关于主题行,我已经研究过了,但找不到同样的解决方案。请看下面我的代码,错误应该来自哪里:
Public Class Athletedb
Shared athlete As New Athlete
Public Shared Function GetAthletes(Dir As String) As List(Of Athlete)
Dim athleteList As New List(Of Athlete)
Dim connection As OleDbConnection = AthleteManDB.GetConnection()
Dim selectStatement As String =
"SELECT Name, Surname, BirthDate, RegDate, Gender, Amount, MemberNumber" &
"FROM Athletes" &
"ORDER BY Surname"
Dim selectCommand As OleDbCommand(selectStatement, connection)
Try
connection.Open()
Dim textIn As OleDbDataReader = OleDbCommand.ExecuteReader()
Dim athlete As Athlete
Do While textIn.Read
athlete = New Athlete
athlete.Name = textIn("Name").ToString
athlete.Surname = textIn("Surname").ToString
athlete.Birthdate = textIn("Birthdate").ToString
athlete.RegDate = textIn("RegDate").ToString
athlete.Gender = textIn("Gender").ToString
athlete.Amount = textIn("Amount").ToString
athlete.MemberNumber = textIn("MemberNumber").ToString
athleteList.Add(athlete)
Loop
textIn.Close()
Catch ex As OleDbException
Throw ex
Finally
connection.Close()
End Try
Return athleteList
End Function
Public Shared Function SaveAthlete(Dir As String, athletes As List(Of Athlete))
Dim connection As OleDbConnection = AthleteManDB.GetConnection
Dim insertStatement As String =
"INSERT Athletes" &
"(Name, Surname, Birthdate, RegDate, Gender, Amount, MemberNumber)" &
"VALUES (@Name, @Surname, @Birthdate, @RegDate, @Gender, @Amount, @MemberNumber)"
Dim insertCommand As New OleDbCommand(insertStatement, connection)
insertCommand.Parameters.AddWithValue("@Name", athlete.Name)
insertCommand.Parameters.AddWithValue("@Surname", athlete.Name)
insertCommand.Parameters.AddWithValue("@Birthdate", athlete.Name)
insertCommand.Parameters.AddWithValue("@RegDate", athlete.Name)
insertCommand.Parameters.AddWithValue("@Gender", athlete.Name)
insertCommand.Parameters.AddWithValue("@Amount", athlete.Name)
insertCommand.Parameters.AddWithValue("@MemberNumber", athlete.Name)
Try
connection.Open()
insertCommand.ExecuteNonQuery()
Dim selectStatement As String =
"SELECT INDENT_CURRENT('Athletes') FROM Athletes"
Dim selectCommand As New OleDbCommand(selectStatement, connection)
Catch ex As OleDbException
Throw ex
Finally
connection.Close()
End Try
Return athletes
End Function
Public Shared Function DeleteAthlete(Dir As String, athletes As List(Of Athlete)) As Boolean
Dim connection As OleDbConnection = AthleteManDB.GetConnection
Dim deleteStatement As String =
"DELETE FROM Athletes " &
"WHERE Name = @Name " &
"WHERE Surname = @Surname " &
"WHERE Birthdate = @Birthdate " &
"WHERE RegDate = @RegDate " &
"WHERE Gender = @Gender " &
"WHERE Amount = @Amount " &
"WHERE MemberNumber = @MemberNumber "
Dim deleteCommand As New OleDbCommand(deleteStatement, connection)
deleteCommand.Parameters.AddWithValue("@Name", athlete.Name)
deleteCommand.Parameters.AddWithValue("@Surname", athlete.Name)
deleteCommand.Parameters.AddWithValue("@Birthdate", athlete.Name)
deleteCommand.Parameters.AddWithValue("@RegDate", athlete.Name)
deleteCommand.Parameters.AddWithValue("@Gender", athlete.Name)
deleteCommand.Parameters.AddWithValue("@Amount", athlete.Name)
deleteCommand.Parameters.AddWithValue("@MemberNumber", athlete.Name)
Try
connection.Open()
Dim count As Integer = deleteCommand.ExecuteNonQuery
If count > 0 Then
Return True
Else
Return False
End If
Catch ex As OleDbException
Throw ex
Finally
connection.Close()
End Try
End Function结束类
我还在下面的行上获得了对非共享成员需要的对象引用的引用,但不确定这是什么意思
Dim textIn As OleDbDataReader = OleDbCommand.ExecuteReader()发布于 2016-09-14 21:23:38
因为OleDBCommand类是静态的,所以不允许在不创建实例的情况下使用它。因为您已经创建了它的一个实例(selectCommand),所以您应该使用它:
textIn = selectCommand.ExecuteReader()https://stackoverflow.com/questions/39487259
复制相似问题