VB.NET中能不能对DATASET再用SQL语言(比如用SELECT检索)

如果可以
1,语句应该怎么写
2,新的结果会保存去哪?对原DATASET的修改是否保留?
谢谢
---------------------------------------------------------------

可以筛选数据,但不能是标准的SQL语句:
Me.DsUserManager1.Tables(0).Select("id > 5 and id <20")
---------------------------------------------------------------

1.筛选:
dataset.tables("tabname").select("id=1")'相当于SQL中WHERE后的条件内容

2.保存到哪?这倒是不知,可能开辟一个内存,也可能是一个临时区....
应该相当于从一个表中select
---------------------------------------------------------------

Select函数返回一个DataRow()对象数组,可用循环方法加入数据集:

dim row as datarow
dim rows() as datarow=Me.DsUserManager1.Tables(0).Select("id > 5 and id <20")
if rows.length>0 then DsUserManager1.table(0).clear'重新导入筛选的数据
for each row in rows
DsUserManager1.table(0).ImportRow(row)
next

---------------------------------------------------------------

ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemDataDataTableClassSelectTopic.htm
---------------------------------------------------------------

类似这样
OdbcCommand1.CommandText = "select * from xx"
OdbcDataAdapter1.SelectCommand = OdbcCommand1
OdbcDataAdapter1.Fill(dataset1, "xx")
---------------------------------------------------------------

可以对dataset中的dataview进行筛选。例如:dataview1.rowFilter="Parent_id"=+Parent.id.tostring

dataview排序用dataview1.sort="Parent ASC"
---------------------------------------------------------------

你要在Table中重新定义一次主键才行,如下:
Private Sub GetRowsByFilter()

Dim customerTable As DataTable
customerTable = new DataTable( "Customers" )

' Add columns
customerTable.Columns.Add( "id", GetType(Integer) )
customerTable.Columns.Add( "name", GetType(String) )

' Set PrimaryKey
customerTable.Columns("id").Unique = true
customerTable.PrimaryKey = new DataColumn() { customerTable.Columns("id") }

' add ten rows
Dim id As Integer
For id = 1 To 10
customerTable.Rows.Add( _
new object() { id, string.Format("customer{0}", id) } )
Next id
customerTable.AcceptChanges()

' add another ten rows
For id = 11 To 20
customerTable.Rows.Add( _
new object() { id, string.Format("customer{0}", id) } )
Next id

Dim strExpr As String
Dim strSort As String

strExpr = "id > 5"
' Sort descending by CompanyName column.
strSort = "name DESC"
' Use the Select method to find all rows matching the filter.
Dim foundRows As DataRow() = _
customerTable.Select( strExpr, strSort, DataViewRowState.Added )

PrintRows( foundRows, "filtered rows")

foundRows = customerTable.Select()
PrintRows( foundRows, "all rows")
End Sub

Private Sub PrintRows( rows() As DataRow, label As String)
Console.WriteLine( "\n{0}", label )
If rows.Length <= 0 Then
Console.WriteLine( "no rows found" )
Exit Sub
End If
Dim r As DataRow
Dim c As DataColumn
For Each r In rows
For Each c In r.Table.Columns
Console.Write( "\t {0}", r(c) )
Next c
Console.WriteLine()
Next r
End Sub

Published At
Categories with Web编程
Tagged with
comments powered by Disqus