我是VB.Net的新手。 最近,我想检查该行是否包含值,如果包含,则返回true,如果不包含,则返回false。
想象一下这是我的表呼叫员工
DEPARTMENT || NAME
-------------------
ABC || AAA
CDE || BBB
EFG || CCC
根据我对PHP的了解,我们可以使用它从行中获取所有值。
while( $row = mysqli_fetch_array($query) ){
if($row['DEPARTMENT'] == "CDE"){
echo "True";
}
else {
echo "False";
}
}
这是我在VB.NET中的代码
Dim da As Odbc.OdbcDataAdapter
Dim ds As DataSet
Dim dt As DataTable
da = New Odbc.OdbcDataAdapter("SELECT * FROM employee", Connection)
ds = New DataSet
da.Fill(ds, "employee")
dt = ds.Tables("employee")
For Each row As DataRow In dt.Rows
If (row("DEPARTMENT") = "ABC") Then
MsgBox("True")
Else
MsgBox("False")
End If
Next
主要问题是,如果我尝试获取第一条记录,则该语句是否起作用。但是,当我尝试获取记录编号2(例如row("DEPARTMENT") = "CDE"
)时,结果语句始终为false,这应该不正确,因为该行包含“ CDE”。我一整天都在尝试解决并进行搜索,但是找不到出路
答案 0 :(得分:0)
我认为您要执行的工作是将部门与一组有权对数据库进行CRUD的部门交叉引用?
下面可以通过创建特权部门的集合并使用LINQ .Any()
P.S。可以通过使用String.Equals()
和StringComparison
枚举来改善这一点。
P.P.S在使用Using
类时使用IDisposable
语句。
Dim departments As List(Of String) = New List(Of String) From {
"ABC",
"CDE"
}
Dim da As Odbc.OdbcDataAdapter
Dim ds As DataSet
Dim dt As DataTable
da = New Odbc.OdbcDataAdapter("SELECT * FROM employee", Connection)
ds = New DataSet
da.Fill(ds, "employee")
dt = ds.Tables("employee")
For Each row As DataRow In dt.Rows
Dim department = row("DEPARTMENT").ToString()
Ifdepartments.Any(Function(t) t.Equals(department, StringComparison.InvariantCultureIgnoreCase)) Then
MsgBox("True")
Else
MsgBox("False")
End If
Next