您当前的位置:首页 > 互联网教程

vb连接数据库sqlserver的问题

发布时间:2025-05-24 11:47:34    发布人:远客网络

vb连接数据库sqlserver的问题

一、vb连接数据库sqlserver的问题

上面我们着重探讨了控件与数集据绑定的向导模式。这种模式虽然实现方法简单,但是却不灵活,可移植性较差。为此,我们为大家介绍如何用代码来实现数据绑定。用代码实现数据绑定的优点在于灵活自由,代码移植方便。

为了便于更好的理解,我们仍然选用“TextBox”控件作为实例来介绍。

新建一个项目,按照图的方法设置程序界面,再增加一个Button控件,将其“Text“属性设为“TextBox数据绑定”。

'指定程序中引用的名称空间:在代码窗中输入:

'首先定义全局变量myDataSet及GetConnected()方法,代码如下:

Private WithEvents Button1 As Button

Private components As System.ComponentModel.Container

GetConnected()'这个过程是用于建立连接,打开数据库

Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

'为GetConnected()方法增加代码,用来打开数据表,返回数据集。

Dim ConnectionString As String=〃 Provider= Microsoft.Jet.OLEDB.4.0; Data Source= e:\My Documents\db1.mdb〃

Dim myConn As OleDbConnection= New OleDbConnection()

myConn.ConnectionString= ConnectionString

Dim strCom As String=〃 SELECT* FROM student〃

'用 OleDbDataAdapter得到一个数据集

Dim myCommand As OleDbDataAdapter= New OleDbDataAdapter(strCom, myConn)

'把Dataset绑定student数据表

myCommand.Fill(myDataSet,〃student〃)

Private Sub InitializeComponent()

'将各个文本框控件绑定到数据库的各个字段。

Private Sub Button1_Click(ByVal sender As Object, _

ByVal e As System.EventArgs) Handles Button1.Click

TxtStuID.DataBindings.Add(New Binding(〃Text〃, Me.myDataSet,〃student.StuID〃))

TxtStuName.DataBindings.Add(New Binding(〃Text〃, Me.myDataSet,〃student.StuName〃))

TxtStuSex.DataBindings.Add(New Binding(〃Text〃, Me.myDataSet,〃student.StuSex〃))

TxtStuBorn.DataBindings.Add(New Binding(〃Text〃, Me.myDataSet,〃student.StuBorn〃))

TxtStuCore.DataBindings.Add(New Binding(〃Text〃, Me.myDataSet,〃student.StuCore〃))

编译后运行程序,看看是不是与上面介绍的实例运行结果相同。

在上面的代码中,我们新建了一个GetConnected()过程,用于建立连接,打开数据库。在用代码实现数据绑定或者对数据库进行任何操作前,就必须要先建立连接,打开数据库,程序运行结束后再关闭数据连接。

在Button1_Click过程中,我们把“TextBox”控件绑定到数据集myDataSet中“student”的各个字段上。

程序运行后,点击“TextBox数据绑定”按纽,程序就会用myDataSet中“student”中的数据来自动填充文本框。

有了上面的内容做基础,再来讨论如何把数据集绑定到Label控件上就显得很简单了。把数据绑定到Label控件的方法与绑定到TextBox控件的方法大同小异。此处不再详细讲解,只给出代码实现绑定到Label控件的核心部分代码。

Private Sub Button1_Click(ByVal sender As Object, _

ByVal e As System.EventArgs) Handles Button1.Click

'把student表的StuName字段绑定到Label1的Text属性上。

Label1.DataBindings.Add( New Binding(〃Text〃, Me.myDataSet,〃student.StuName〃))

上面介绍的是对组件的简单数据绑定,对组件的复杂数据绑定和它有所区别,也有所相同,具体如下:

(1)要对ComboBox组件实现数据绑定,首先也是要打开数据表,得到数据集。这和上面TextBox组件的代码大致一样,在此略过。

设定了ComboBox组件的三个属性就可以实现数据绑定了,这三个属性是“DataSource”、“DisplayMember”、“ValueMember”。其中DataSource表示指定的数据集;DisplayMember表示ComboBox组件显示的字段值;ValueMember表示ComboBox组件选择后的值。这三个属性的具体使用方法如下:

ComboBox1.DataSource= Me.myDataSet

ComboBox1.DisplayMember=〃studnet.StuName〃

ComboBox1.ValueMember=〃 studnet.StuName〃

下面我们就来看看把数据集绑定到ComboBox控件的核心代码:

Private Sub Button1_Click( ByVal sender As Object, _

ByVal e As System.EventArgs) Handles Button1.Click

ComboBox1.DataSource= Me.myDataSet

ComboBox1.DisplayMember=〃student.StuName〃

ComboBox1.ValueMember=〃 student.StuName〃

注意:对ComboBox控件进行数据绑定的方法同样适用于ListBox控件,因此关于LisBox控件数据绑定方法本文将不再介绍。需要者请参阅ComboBox相关内容。

前面介绍了ADO.NET基础,以及ADO.NET与Windows窗体控件的绑定方法。但是,对于数据库编程我们更想了解的还是如何增加记录,删除记录,更新记录等数据库记录的操作方法。这里我们将以一个具体的实例为大家介绍这些操作方法。

在图3中,有btnFirst(第一个记录),btnEnd(最后一条记录),btnAdd(增加记录),btnDel(删除记录),btnEdit(修改记录)控件。

用代码形式打开数据并在frmtest_load中把数据绑定给TextBox控件。此处给出源代码:

Dim ConnectionString As String=〃 Provider= Microsoft.Jet.OLEDB.4.0; Data Source= e:\My Documents\db1.mdb〃

Dim myConn As OleDbConnection= New OleDbConnection()

myConn.ConnectionString= ConnectionString

Dim strCom As String=〃 SELECT* FROM student〃

'用 OleDbDataAdapter得到一个数据集

Dim myCommand As OleDbDataAdapter= New OleDbDataAdapter(strCom, myConn)

'把Dataset绑定student数据表

myCommand.Fill(myDataSet,〃student〃)

Private Sub frmtest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

txtStuID.DataBindings.Add(New Binding(〃Text〃, Me.myDataSet,〃student.StuID〃))

txtStuName.DataBindings.Add(New Binding(〃Text〃, Me.myDataSet,〃student.StuName〃))

txtStuSex.DataBindings.Add(New Binding(〃Text〃, Me.myDataSet,〃student.StuSex〃))

txtStuBorn.DataBindings.Add(New Binding(〃Text〃, Me.myDataSet,〃student.StuBorn〃))

txtStuCore.DataBindings.Add(New Binding(〃Text〃, Me.myDataSet,〃student.StuCore〃))

完成以上步骤后,我们就可以通过编程对数据库进行各作操作了。

在完成对窗体中的WinForm组件进行绑定后,实现对数据记录的浏览操作的关键就是要找到如何定位数据记录指针的方法。而要实现这种处理就需要用到.NET FrameWork SDK中的名称空间System.Windows.Froms中的BindingManagerBase类。

BindingManagerBase是一个抽象的类,主要用于管理同一数据表所有绑定对象。BindingManagerBase类中定义了二个属性“position”和“Count”,第一个属性是定义当前数据指针,而第二个属性主要是得到当前数据集有多少记录数目。在已经进行完数据绑定后,通过这两个属性配合使用,实现对数据记录的浏览。

双击“上一条”按钮,在代码窗中输入以下代码:

Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious_.Click

Me.BindingContext(myDataSet,〃student〃).Position-= 1

双击“下一条”按钮在代码窗中输入以下代码:

Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesbtnNext.Click

Me.BindingContext(myDataSet,〃student〃).Position+= 1

双击“最后一条记录”按钮,在代码窗中输入以下代码:

Private Sub btnEnd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnd.Click

Me.BindingContext(myDataSet,〃student〃).Position= Me.BindingContext(myDataSet,〃student〃).Count- 1

双击“第一条记录”按钮,在代码窗中输入以下代码:

Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click

Me.BindingContext(myDataSet,〃student〃).Position= 0

说明:为了代码书写方便,我们可以先定义一个BindingManagerBase对象myBind,如myBind= Me.BindingContext(myDataSet,〃student〃),于是以上各句代码均可以简写成:

向上翻阅一条记录:myBind.Position= myBind.Position- 1

向下翻阅一条记录:myBind.Position= myBind.Position+ 1

翻阅到最后一条记录:myBind.Position=myBind.count- 1

翻阅到第一条记录:myBind.Position= 0

双击“删除记录”按钮,在代码窗中输入以下代码:

Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDel.Click

Dim ConnectionString As String=〃 Provider= Microsoft.Jet.OLEDB.4.0; Data Source= e:\My Documents\db1.mdb〃

Dim myConn As OleDbConnection= New OleDbConnection()

myConn.ConnectionString= ConnectionString

Dim strDele As String=〃DELETE From student WHERE StuID='〃+ txtStuID.Text+〃'〃

Dim myCommand As OleDbCommand= New OleDbCommand(strDele, myConn)

myCommand.ExecuteNonQuery() myDataSet.Tables(〃student〃).Rows(Me.BindingContext(myDataSet,〃student〃).Position).Delete()

myDataSet.Tables(〃student〃).AcceptChanges()

前面四行代码我们已经非常熟悉,目的是建立与数据据的连接并打开数据库。第6行代码我们建立一个SQL查询,用来查询数据表中StuID字段值等于TxtStuID.Text输入值的所有记录。并在第7行代码中将查询结果建立一个新的OleDbCommand对象,用来指定要删除的记录。第8行代码是从数据库中删除指定的记录,第9行代码是从myDataSet中删除记录。前者是物理上删除记录,如果去掉第8行代码运行程序你就会发现,记录只是在当前操作中被删除了,在数据库中依然存在。

其中第6行代码中定义的SQL查询条件读者可以根据需要自行指定。需要说明的是,由于我们在创建数据表时,指定StuID字段的类型为Text类型,因此在书写SQL语名时要在“=”号前加上单引号,具体格式请参照第6行代码。如果StuID字段类型为数字型,那么第6行正确写法应该为:

Dim strDele As String=〃DELETE From student WHERE StuID=〃+ txtStuID.Text

修改数据的方法有很多,本文中我们将以采用SQL语言来修改数据记录为例详细介绍一下如何修改数据记录。下面我们先看看程序代码:

Dim ConnectionString As String=〃 Provider= Microsoft.Jet.OLEDB.4.0; Data Source= e:\My Documents\db1.mdb〃

Dim myConn As OleDbConnection= New OleDbConnection()

myConn.ConnectionString= ConnectionString

myDataSet.Tables(〃student〃).Rows(Me.BindingContext(myDataSet,〃student〃).Position).BeginEdit()

'利用SQL语句创建数据更新集合

Dim StrUpdate As String=〃Update student SET StuName='〃+ txtStuName.Text+〃',StuSex='〃+ txtStuSex.Text+〃',StuBorn='〃+ txtStuBorn.Text+〃',StuCore='〃+ txtStuCore.Text+〃' WHERE StuID='〃+ txtStuID.Text+〃'〃

'利用SQL结果创建新的OleDbCommand对象

Dim myCommand As OleDbCommand= New OleDbCommand(StrUpdate, myConn)

myDataSet.Tables(〃student〃).Rows(Me.BindingContext(myDataSet,〃student〃).Position).EndEdit()

myDataSet.Tables(〃student〃).AcceptChanges()

上述代码中我们采用SQL语言中的Update语名来更新记录,对各个TextBox中的值修改后更新到数据库。其中重要语句就是SQL语句的编写。如果你有不明白的地方,请参阅SQL相关资料。代码中我们同时还利用了BeginEdit()与EndEdit()方法,任何从数据的修改都必须在这两个方法之间进行。前者是数据修改的入口,后者则是完成将数据写入数据库的工作。

增加数据记录与修改数据在实现方法上有很多相同之处。在下面的实例中我们利用SQL的Insert语句在指定位置插入一条记录,把更新到数据库。如果你想在数据表最后增加一条记录,只需要将数据记录指针指向数据表末尾就行了。

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click

Dim ConnectionString As String=〃 Provider= Microsoft.Jet.OLEDB.4.0; Data Source= e:\My Documents\db1.mdb〃

Dim myConn As OleDbConnection= New OleDbConnection()

myConn.ConnectionString= ConnectionString

Dim StrAdd As String=〃insert into student(Stuid,StuName,StuSex,StuBorn,StuCore) values('〃+ txtStuID.Text+〃','〃+ txtStuName.Text+〃','〃+ txtStuSex.Text+〃','〃+ txtStuBorn.Text+〃','〃+ txtStuCore.Text+〃')〃

Dim myCommand As OleDbCommand= New OleDbCommand(StrAdd, myConn)

myDataSet.Tables(〃student〃).Rows(Me.BindingContext(myDataSet,〃student〃).Position).BeginEdit()

myDataSet.Tables(〃student〃).Rows(Me.BindingContext(myDataSet,〃student〃).Position).EndEdit()

myDataSet.Tables(〃student〃).AcceptChanges()

有了前面几种基本操作方法的代码分析后,这段代码相信不难理解。大家需要关注的还是SQL语句是如何实现数据记录增加的。这种方法具有一定的通行性。

完成上述设计后我们来看看整个程序的运行结果。按下F5键运行程序即可。

本文中所有代码均在Windows XP+VB.NET环境下调试通过。

二、vbnet和vb的区别

1、vbnet和vb的区别是vbnet数据库应用包括ADO.net、数据绑定;vb数据库应用包括ADO、DAO;和vb相比,vbnet是完全面向对象的编程语句;vbnet可以创建Windows窗体和Web窗体,vb只能创建Windows窗体。

2、数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。一个数据库由多个表空间(Tablespace)构成。数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。

三、vb6和vb.net如何选择

1、vb6可以在win10上运行,开发的程序也可以不用担心无法运行的问题都向下兼容的

2、理论和现实上都不会让vb6开发的程序无法运行

3、够用,只不过是因为处理文件上没有多线程速度上可能会慢点而已

4、这个因人而异,每个人的理解能力不同,编程逻辑思想比较重要,语法不同比较容易解决