我需要查看DataTable中是否存在行,其中表(plan_code)中的字段与变量(strPlanCode)匹配。如果找到匹配,则它从该行的另一个字段中获取值;如果没有,它会将该行写入错误列表。我开始的方向是设置一个像这样的DataTable:
Using daProduct As New OleDbDataAdapter("SELECT * FROM [product]", con)
Dim cbProduct = New OleDbCommandBuilder(daProduct)
cbExtract.QuotePrefix = "["
cbExtract.QuoteSuffix = "]"
Dim dtProduct = New DataTable
daProduct.Fill(dtProduct)
但是没有任何方法似乎有用,我想知道我是否应该沿着DataAdapter / DataTable路径走下去。
我尝试过的一些是:
strSearch = "plan_code = " & strPlanCode
intProdRow = dtProduct.Select(strSearch)
和
intProdRow = dtProduct.SelectCommand(strSearch)
但这些都不会得到结果和/或会编译。
使用ODBC连接到SQL Anywhere数据库的旧代码如下所示:
ls_command = "select * from product"
selectCMD = New OdbcCommand(ls_command, connectDB)
selectCMD.CommandTimeout = 30
productDA.SelectCommand = selectCMD
productDA.Fill(clp_valDS, "product")
porductTBL = clp_valDS.Tables("product")
productTBL.PrimaryKey = New DataColumn() {productTBL.Columns("plan_code")}
productDR = productTBL.Rows.Find(ls_plan_code)
If (productDR Is Nothing) Then
ls_error_message = "Plan Code " + ls_plan_code + " not found"
GoTo ErrorHandler
Else
ls_secondary_guar = productDR("secondary_guar")
End If
答案 0 :(得分:1)
我会使用以下方法:
For Each row As System.Data.DataRow In dtProduct.Rows
if not row.item("plan_code") is DBNull.Value then
If row.Item("plan_code").ToString = strPlanCode Then
'do what you want with the matching row.
End If
end if
Next