vb.net 连接 sql server 数据库,菜鸟问题,请高手解答

一直用VB6.0,这两天开始用vb.net,发现两个根本不是一回事,有个小问题困扰了我好几个小时,vb.net代码如下PublicClassForm1PrivateSub... 一直用VB6.0,这两天开始用vb.net,发现两个根本不是一回事,有个小问题困扰了我好几个小时,vb.net 代码如下
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim cn As New System.Data.SqlClient.SqlConnection("data source=aaa;initial catalog=wodeshuju;user id=wodeshuju;password=520")
Dim rs As New System.Data.SqlClient.SqlCommand
Dim da As New System.Data.SqlClient.SqlDataAdapter()
Dim ds As New DataSet()
rs.Connection = cn
da.SelectCommand = rs
da.SelectCommand.CommandText = "select * from 密码表"
da.Fill(ds)
ComboBox1.Text = ds.Tables(0).Rows(0).Item("用户名")

da.SelectCommand.CommandText = "select * from 备注表 where 变量 = 'gsmc'"
da.Fill(ds)
TextBox1.Text = ds.Tables(0).Rows(0).Item("备注")
End Sub

连接数据库以后读取“密码表”里的某个数据,获取完需要的数据以后接着读取“备注表”里需要的数据,那么问题来了,前者可以读取,后者读取不了,把前者代码删除后者又可以读取(语言没错),以前用vb的时候 set rs = nothing 就完了,可以接着写,vb.net该怎么弄?
vb.net 有没有类似于VB6.0里的模块一样的东西啊,可以定义全局变量的,不需要每个控件都链接一次数据库,重新声明变量,请教大神帮忙。
展开
 我来答
syx54
2018-01-09 · TA获得超过7378个赞
知道大有可为答主
回答量:6567
采纳率:83%
帮助的人:2736万
展开全部
说明:
da.Fill(ds)是使用da的Fill方法,把通过检索得到的数据填充到ds里,ds是一个或一组 DataTable 对象组成;
da.Fill()方法,有好几种重载,我这里介绍我常使用的两种形式;
一,就是你使用的形式
da.Fill(ds)
这里,是把通过Select语句检索的得到的数据行,添加到默认的也是唯一的DataTable里
你第一次使用da.Fill(ds),得到了你想要得到的结果。
当你再次使用该语句da.Fill(ds)的时候,会把检索到的行添加到原来的数据行的后面。(你可以把你原来代码两次添加的结果分别用2个网格来显示,理解一下我说的)
注意:仅仅把检索到的新行的列名,与原来列名相同的数据添加,不存在的列名不添加。如果所有列名都不存在,仅添加空行。
二,为了获得不同的检索数据,采用以下两种方式解决
方法1,如果前面检索到的数据已经不需要了,那么可以;
ds.Clear() '先清空第一次检索得到的数据
da.SelectCommand.CommandText = "select * from 备注表 where 变量 = 'gsmc'"
da.Fill(ds)
方法2,如果前面检索到的数据还需要,那么可以在填充时指定表的名称
第一次检索;
da.SelectCommand.CommandText = "select * from 密码表"
da.Fill(ds,"检索1") ‘这里用"检索1"表示并保存到第一次检索的独立表里
ComboBox1.Text = ds.Tables("检索1").Rows(0).Item("用户名")
这行也可以用;
ComboBox1.Text = ds.Tables(0).Rows(0).Item("用户名")
第二次检索;
da.SelectCommand.CommandText = "select * from 备注表 where 变量 = 'gsmc'"
da.Fill(ds,"检索2") ‘这里用"检索2"表示并保存到第二次检索的独立表里
TextBox1.Text = ds.Tables("检索2").Rows(0).Item("备注")
这行也可以用;
TextBox1.Text = ds.Tables(1).Rows(0).Item("备注")
handangaoyang
2018-01-09 · TA获得超过2242个赞
知道大有可为答主
回答量:2633
采纳率:88%
帮助的人:913万
展开全部
你没有弄明白,SqlDataAdapter,这个类所做的工作。
SqlDataAdapter:相当于把数据库中的数据拷贝一份副本到本地。所以当你Fill(ds)将数据拷贝到本地之后,与数据库的连接就断掉了。从此你就可以使用本地的数据库副本ds。所以你下面要想再重新Fill(ds),那么必须要创建数据库连接。
你的这种需求可以尝试用SqlDataReader,相当于创建一个游标,来读取数据。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式