ConnStrSys = M_ConnStrSys.ConnStrSys ‘连接数据库
strSQL1=“select con1,con2 from table1"
Try
jf_Adapters = New Odbc.OdbcDataAdapter(strSQLs, ConnStrSys)
jf_Adapters.Fill(jf_DataSets)
With jf_DataSets.Tables(0)
If .Rows.Count <> 0 Then
For j = 0 To .Rows.Count - 1 '得到条数为2
con1 = .Rows(j).Item(0).ToString
con2 = .Rows(j).Item(1).ToString
strSQL2="select con3,con4 from table2 where con3=con1"
ConnStrSys = M_ConnStrSys.ConnStrSys '再次连接数据库
Try
jf_Adapter = New Odbc.OdbcDataAdapter(strSQL, ConnStrSys)
jf_Adapter.Fill(jf_DataSet)
jf_DataSet.AcceptChanges()
With jf_DataSet.Tables(0)
If .Rows.Count <> 0 Then
For v = 0 To .Rows.Count - 1 条数为1
con3= .Rows(v).Item(0).ToString
con4= .Rows(v).Item(1).ToString
Next v
End If
End With
Catch objA As Exception
End Try
next j
End If
End With
Catch objA As Exception
End Try
但我在第二次循环时,出现了问题,jf_DataSet.Tables(0)。rows.count应该是1 而得到的却是上次
jf_DataSets.tables(0).rows.count 为2,从而con3,con4,都是得到上面的con1,con2列的值,如果后面还有迁套循环,后面的数据集都是得到第一个数据集的条数。不知为何?请高手帮忙?
11 个解决方案
#1
你要在第一次之后,DataSet.DataTable.Remove
#2
DataSet.DataTable.Remove
处理一下吧
处理一下吧
#3
搂主,能否说清楚一点?是用具体的dataset处理,还是你们说得直接用DataSet.DataTable.Remove 处理,你清楚所有的dataset?另外放在上述那个位置好呢?麻烦说具体好吗?我头实在弄晕了,多谢
#4
另外,我用 jf_DataSet.Tables(0).Remove 会报错,在
jf_DataSet.Tables(0)的属性里面只有clear()和dispose()
应该一样的把?
jf_DataSet.Tables(0)的属性里面只有clear()和dispose()
应该一样的把?
#5
不用索引,用表名来指定dataset中的datatable
#6
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim ds As New DataSet
Dim sqlcn As New SqlConnection("server=.;database=pubs;user=sa;password=;")
Dim sqlapa As New SqlDataAdapter("select * from authors", sqlcn)
sqlcn.Open()
sqlapa.Fill(ds, "tbl1")
If ds.Tables("tbl1").Rows.Count > 0 Then
MsgBox(ds.Tables("tbl1").Rows.Count)
End If
Dim sqlcmd As SqlCommand
sqlcmd = New SqlCommand("select * from jobs", sqlcn)
sqlapa.SelectCommand = sqlcmd
sqlapa.Fill(ds, "tbl2")
If ds.Tables("tbl2").Rows.Count > 0 Then
MsgBox(ds.Tables("tbl2").Rows.Count)
End If
sqlapa.Dispose()
sqlcmd.Dispose()
sqlcn.Close()
End Sub
Dim ds As New DataSet
Dim sqlcn As New SqlConnection("server=.;database=pubs;user=sa;password=;")
Dim sqlapa As New SqlDataAdapter("select * from authors", sqlcn)
sqlcn.Open()
sqlapa.Fill(ds, "tbl1")
If ds.Tables("tbl1").Rows.Count > 0 Then
MsgBox(ds.Tables("tbl1").Rows.Count)
End If
Dim sqlcmd As SqlCommand
sqlcmd = New SqlCommand("select * from jobs", sqlcn)
sqlapa.SelectCommand = sqlcmd
sqlapa.Fill(ds, "tbl2")
If ds.Tables("tbl2").Rows.Count > 0 Then
MsgBox(ds.Tables("tbl2").Rows.Count)
End If
sqlapa.Dispose()
sqlcmd.Dispose()
sqlcn.Close()
End Sub
#7
'用remove
Dim ds As New DataSet
Dim sqlcn As New SqlConnection("server=.;database=pubs;user=sa;password=;")
Dim sqlapa As New SqlDataAdapter("select * from authors", sqlcn)
sqlcn.Open()
sqlapa.Fill(ds)
If ds.Tables(0).Rows.Count > 0 Then
MsgBox(ds.Tables(0).Rows.Count)
End If
Dim sqlcmd As SqlCommand
sqlcmd = New SqlCommand("select * from jobs", sqlcn)
sqlapa.SelectCommand = sqlcmd
'1-datatable
Dim dt As DataTable = ds.Tables(0)
ds.Tables.Remove(dt) '也可以是表名为参数 如下面的可以ds.tables.remove("tb2")
sqlapa.Fill(ds, "tbl2")
If ds.Tables(0).Rows.Count > 0 Then
MsgBox(ds.Tables(0).Rows.Count)
End If
sqlapa.Dispose()
sqlcmd.Dispose()
sqlcn.Close()
Dim ds As New DataSet
Dim sqlcn As New SqlConnection("server=.;database=pubs;user=sa;password=;")
Dim sqlapa As New SqlDataAdapter("select * from authors", sqlcn)
sqlcn.Open()
sqlapa.Fill(ds)
If ds.Tables(0).Rows.Count > 0 Then
MsgBox(ds.Tables(0).Rows.Count)
End If
Dim sqlcmd As SqlCommand
sqlcmd = New SqlCommand("select * from jobs", sqlcn)
sqlapa.SelectCommand = sqlcmd
'1-datatable
Dim dt As DataTable = ds.Tables(0)
ds.Tables.Remove(dt) '也可以是表名为参数 如下面的可以ds.tables.remove("tb2")
sqlapa.Fill(ds, "tbl2")
If ds.Tables(0).Rows.Count > 0 Then
MsgBox(ds.Tables(0).Rows.Count)
End If
sqlapa.Dispose()
sqlcmd.Dispose()
sqlcn.Close()
#8
你这样的数据集处理方式很不理想!资源浪费太大。
#9
Dataset.Dispost
#10
问题关键在于:
jf_Adapter.Fill(jf_DataSet)
jf_DataSet.AcceptChanges()
放在
For j = 0 To .Rows.Count - 1 '得到条数为2
中!
呵呵……一次循环就执行一次
jf_Adapter.Fill(jf_DataSet)
jf_DataSet.AcceptChanges()
你想想会是什么结果?
唉!其实啊,哪有人像你那样的程序结构的啊???
楼主的编程方法需要提高啊
jf_Adapter.Fill(jf_DataSet)
jf_DataSet.AcceptChanges()
放在
For j = 0 To .Rows.Count - 1 '得到条数为2
中!
呵呵……一次循环就执行一次
jf_Adapter.Fill(jf_DataSet)
jf_DataSet.AcceptChanges()
你想想会是什么结果?
唉!其实啊,哪有人像你那样的程序结构的啊???
楼主的编程方法需要提高啊
#11
呵呵,楼主,你好像没有看清问题喲?
#1
你要在第一次之后,DataSet.DataTable.Remove
#2
DataSet.DataTable.Remove
处理一下吧
处理一下吧
#3
搂主,能否说清楚一点?是用具体的dataset处理,还是你们说得直接用DataSet.DataTable.Remove 处理,你清楚所有的dataset?另外放在上述那个位置好呢?麻烦说具体好吗?我头实在弄晕了,多谢
#4
另外,我用 jf_DataSet.Tables(0).Remove 会报错,在
jf_DataSet.Tables(0)的属性里面只有clear()和dispose()
应该一样的把?
jf_DataSet.Tables(0)的属性里面只有clear()和dispose()
应该一样的把?
#5
不用索引,用表名来指定dataset中的datatable
#6
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim ds As New DataSet
Dim sqlcn As New SqlConnection("server=.;database=pubs;user=sa;password=;")
Dim sqlapa As New SqlDataAdapter("select * from authors", sqlcn)
sqlcn.Open()
sqlapa.Fill(ds, "tbl1")
If ds.Tables("tbl1").Rows.Count > 0 Then
MsgBox(ds.Tables("tbl1").Rows.Count)
End If
Dim sqlcmd As SqlCommand
sqlcmd = New SqlCommand("select * from jobs", sqlcn)
sqlapa.SelectCommand = sqlcmd
sqlapa.Fill(ds, "tbl2")
If ds.Tables("tbl2").Rows.Count > 0 Then
MsgBox(ds.Tables("tbl2").Rows.Count)
End If
sqlapa.Dispose()
sqlcmd.Dispose()
sqlcn.Close()
End Sub
Dim ds As New DataSet
Dim sqlcn As New SqlConnection("server=.;database=pubs;user=sa;password=;")
Dim sqlapa As New SqlDataAdapter("select * from authors", sqlcn)
sqlcn.Open()
sqlapa.Fill(ds, "tbl1")
If ds.Tables("tbl1").Rows.Count > 0 Then
MsgBox(ds.Tables("tbl1").Rows.Count)
End If
Dim sqlcmd As SqlCommand
sqlcmd = New SqlCommand("select * from jobs", sqlcn)
sqlapa.SelectCommand = sqlcmd
sqlapa.Fill(ds, "tbl2")
If ds.Tables("tbl2").Rows.Count > 0 Then
MsgBox(ds.Tables("tbl2").Rows.Count)
End If
sqlapa.Dispose()
sqlcmd.Dispose()
sqlcn.Close()
End Sub
#7
'用remove
Dim ds As New DataSet
Dim sqlcn As New SqlConnection("server=.;database=pubs;user=sa;password=;")
Dim sqlapa As New SqlDataAdapter("select * from authors", sqlcn)
sqlcn.Open()
sqlapa.Fill(ds)
If ds.Tables(0).Rows.Count > 0 Then
MsgBox(ds.Tables(0).Rows.Count)
End If
Dim sqlcmd As SqlCommand
sqlcmd = New SqlCommand("select * from jobs", sqlcn)
sqlapa.SelectCommand = sqlcmd
'1-datatable
Dim dt As DataTable = ds.Tables(0)
ds.Tables.Remove(dt) '也可以是表名为参数 如下面的可以ds.tables.remove("tb2")
sqlapa.Fill(ds, "tbl2")
If ds.Tables(0).Rows.Count > 0 Then
MsgBox(ds.Tables(0).Rows.Count)
End If
sqlapa.Dispose()
sqlcmd.Dispose()
sqlcn.Close()
Dim ds As New DataSet
Dim sqlcn As New SqlConnection("server=.;database=pubs;user=sa;password=;")
Dim sqlapa As New SqlDataAdapter("select * from authors", sqlcn)
sqlcn.Open()
sqlapa.Fill(ds)
If ds.Tables(0).Rows.Count > 0 Then
MsgBox(ds.Tables(0).Rows.Count)
End If
Dim sqlcmd As SqlCommand
sqlcmd = New SqlCommand("select * from jobs", sqlcn)
sqlapa.SelectCommand = sqlcmd
'1-datatable
Dim dt As DataTable = ds.Tables(0)
ds.Tables.Remove(dt) '也可以是表名为参数 如下面的可以ds.tables.remove("tb2")
sqlapa.Fill(ds, "tbl2")
If ds.Tables(0).Rows.Count > 0 Then
MsgBox(ds.Tables(0).Rows.Count)
End If
sqlapa.Dispose()
sqlcmd.Dispose()
sqlcn.Close()
#8
你这样的数据集处理方式很不理想!资源浪费太大。
#9
Dataset.Dispost
#10
问题关键在于:
jf_Adapter.Fill(jf_DataSet)
jf_DataSet.AcceptChanges()
放在
For j = 0 To .Rows.Count - 1 '得到条数为2
中!
呵呵……一次循环就执行一次
jf_Adapter.Fill(jf_DataSet)
jf_DataSet.AcceptChanges()
你想想会是什么结果?
唉!其实啊,哪有人像你那样的程序结构的啊???
楼主的编程方法需要提高啊
jf_Adapter.Fill(jf_DataSet)
jf_DataSet.AcceptChanges()
放在
For j = 0 To .Rows.Count - 1 '得到条数为2
中!
呵呵……一次循环就执行一次
jf_Adapter.Fill(jf_DataSet)
jf_DataSet.AcceptChanges()
你想想会是什么结果?
唉!其实啊,哪有人像你那样的程序结构的啊???
楼主的编程方法需要提高啊
#11
呵呵,楼主,你好像没有看清问题喲?