2023年6月21日发(作者:)

VBNET2008六种添加记录方法学习笔记

(图例、源码、说明)

(本文代码2008 + SQL Server 2005下测试通过。)

VB6.0向过渡后,很多编程爱好者对数据库编程感到迷惑,本文通过对国内教材、国外教材、老教材、新教材的研究,将作者看到过的6种(insert语句、参数化3种、行提交、存储过程、)添加(增加)记录的方法提炼出来,并分析了各种添加记录的优点、缺点及是否常用等做了简单叙述。读者可以根据这些方法编写出对应的增删改查(CRUD)代码,使自己的程序编写的更加容易理解,提高编程效率,提升程序的运行速度。

百度文库首发,侵权必究。

一、前期准备工作(图例)

1、引用数据库命名空间

使用数据库对象时要首先导入数据库命名空间,数据库对象的命名空间根据你所使用的数据库不同,命名空间也不一样。本文使用的是SQL Server的命名空间。

Imports ent

2、界面设计

1个Datagridview控件,5个TextBox控件,1个DateTimePicker控件,5个按钮控件。具体控件示例如下:

3、在Datagridview表格中预览数据库记录

简单的查询了这个表的所有记录。 Private Sub dataView()

Dim objConn As New nection

Dim objDa As New aAdapter

Dim objComm As New mand

Dim objDs As New DataSet

tionString = "Data Source=172.30.76.249;Initial Catalog=ldg;User

ID=wink;Pwd=wcp6810662"

dText = "select * from wink"

tion = objConn

Command = objComm

()

(objDs, "wink")

()

urce = ("wink")

End Sub

4、窗体加载时调用dataView()过程预览数据库记录

窗体的

Form2_Load方法在本文的程序代码段中多次被调用以刷新表格,读者可以直接调用dataView()过程刷新表格。

Private Sub Form2_Load(ByVal sender As , ByVal e As rgs) Handles

Call dataView()

End Sub

二、添加记录的六种方法及简要分析(源码及说明)

请注意代码段使用时注意控件名称,否则复制粘贴后容易出现错误。

1、使用INSERT语句添加记录方法:

直接使用SQL的INSERT语句在数据库中添加记录,这种方法大家会经常见到,此种方法较为初级,数据库字段较多时不便于维护,但较为直观,很多初学者使用此方法。

按钮2代码如下:

Private Sub Button2_Click(ByVal sender As , ByVal e As rgs) Handles

Dim objConn As New nection

Dim objComm As New mand

tionString = "Data Source=172.30.76.249;Initial Catalog=ldg;User

ID=wink;Pwd=wcp6810662"

tion = objConn

Dim sql As String

sql = "insert into wink (id,name,sex,age,address,birth) values('" & ng().Trim() & "','" &

ng().Trim() & " ','" & ng().Trim() & " ','" &

ng().Trim() & " ','" & ng().Trim() & " ','" & & "') "

dText = sql

()

Try

eNonQuery()

Catch sqlExceptionErr As eption

(e)

Finally

()

End Try

Call Form2_Load(sender, e)

MsgBox("添加成功!", ation, "提示")

End Sub 2、参数化方式增加数据库记录方法(2008之前):

这种添加记录的方法2008之前较为常用,2008版本之后方法被覆写为hValue方法。该方法的好处是可以在数据记录进入数据库之前控制各个字段的类型,缺点是编程时写代码较为麻烦。

按钮3代码如下:

Private Sub Button3_Click(ByVal sender As , ByVal e As rgs) Handles

Dim objConn As New nection

Dim objComm As New mand

Dim insert As String

insert = "insert into wink (id,name,sex,age,address,birth)"

insert = insert & "values (@id,@name,@sex,@age,@address,@birth)"

tionString = "Data Source=172.30.76.249;Initial Catalog=ldg;User

ID=wink;Pwd=wcp6810662"

tion = objConn

dText = insert

("@id", ).Value = Trim()

("@name", r).Value = Trim()

("@sex", r).Value = Trim()

("@age", ).Value = Trim()

("@address", r).Value = Trim()

("@birth", me).Value = DateValue()

()

Try

eNonQuery()

Catch sqlExceptionErr As eption

(e)

Finally

()

End Try

Call Form2_Load(sender, e)

MsgBox("添加成功!", ation, "提示")

End Sub

3、参数化方式增加数据库记录方法(2008及以后):

这种添加记录的方法使用hValue的属性实现以参数化方式增加记录。以参数化方式增加数据库记录的明显优势是字段关系清晰,并且避免了SQLServer本身的一些漏洞,如注释语句产生的问题。当以参数化的方式添加记录时要考虑SqlCommand类的CommandText属性,需要在SQL语句中使用“@”指明参数;SqlCommand类Parameter属性是SqlParameter参数集合,需要使用Add或AddWithValue方法向集合中添加参数,然后才能使用具体参数的Value属性进行赋值操作。

按钮4代码如下:

Private Sub Button4_Click(ByVal sender As , ByVal e As rgs) Handles

Dim objConn As New nection

Dim objComm As New mand tionString = "Data Source=172.30.76.249;Initial Catalog=ldg;User

ID=wink;Pwd=wcp6810662"

tion = objConn

dText = "insert into wink (id,name,sex,age,address,birth) values

(@id,@name,@sex,@age,@address,@birth)"

hValue("@id", )

hValue("@name", )

hValue("@sex", )

hValue("@age", )

hValue("@address", )

hValue("@birth", DateValue())

()

Try

eNonQuery()

Catch sqlExceptionErr As eption

(e)

Finally

()

End Try

Call Form2_Load(sender, e)

MsgBox("添加成功!", ation, "提示")

End Sub

4、以行提交的方式插入数据库记录方法:

使用SqlCommand命令对象与数据库交互,并插入新记录。当应用程序使用数据集存储记录时,可以使用TableAdapter类的Update()方法,该方法会将所有更改(包括更新、插入及删除)发送到数据库中。这种方法在国产的教材、教程、书籍中较为常见。

按钮5代码如下:

Private Sub Button5_Click(ByVal sender As , ByVal e As rgs) Handles

Dim strSql As String

Dim strConn As String

Dim objDA As aAdapter

Dim objds As New t

Dim objcb As mandBuilder

Dim objrow As w

strConn = "Data Source=172.30.76.249;Initial Catalog=ldg;User ID=wink;Pwd=wcp6810662"

strSql = "select * from wink"

objDA = New aAdapter(strSql, strConn)

objcb = New mandBuilder(objDA)

(objds, "wink")

objrow = ("wink").NewRow

objrow("id") = Trim()

objrow("name") = Trim()

objrow("sex") = Trim()

objrow("age") = Trim()

objrow("address") = Trim()

objrow("birth") = DateValue()

("wink").(objrow)

(objds, "wink")

Call Form2_Load(sender, e)

MsgBox("添加成功!", ation, "提示")

End Sub

End Class

5、使用存储过程添加记录的方法: 由于时间关系此处用到的数据库是Oracle数据库,但与SQLServer基本相似。是一种比较偏向于企业级的添加记录的方法。该方法减少了本地处理时间,但是增加了数据库的负担。并且可以通过存储过程的编程更加灵活地添加记录。

按钮代码如下:

Private Sub Button4_Click(ByVal sender As , ByVal e As rgs) Handles

Dim objCmd As New Command()

tion = New Connection(strConn)

dText = "t"

dType = Procedure

("Pro_A", r).Value =

("Pro_B", r).Value =

("Pro_C", r).Value =

("Pro_D", r).Value =

("Pro_S", me).Value =

'("io_cursor", ).Direction =

Dim objDA As New DataAdapter(objCmd)

Dim objDs As New DataSet()

(objDs, "test")

Call GridView()

End Sub

存储过程代码如下:

create or replace procedure addTest(

Pro_A TEST.A%type,

Pro_B TEST.B%type,

Pro_C TEST.C%type,

Pro_D TEST.D%type,

Pro_S TEST.S%type)

as

begin

insert into TEST (A,B,C,D,S)

values(Pro_A,Pro_B,Pro_C,Pro_D,Pro_S);

-------------------------------4个参数

commit;

end;

6、参数化及占位符方式增加数据库记录方法:

该方法与JAVA中使用SQL添加记录的方法较为相似,是方法3的一种变化,是较新的方法。该方法使用“?”进行站位,并且按照数据库中字段的顺序进行赋值。使用时要注意“?”的个数应与字段个数一致,否则将出现错误。

按钮1代码如下:

Private Sub Button1_Click(ByVal sender As , ByVal e As rgs) Handles

Dim objConn As New nection

Dim objComm As New mand

tionString = "Data Source=172.30.76.249;Initial Catalog=ldg;User

ID=wink;Pwd=wcp6810662"

tion = objConn

dText = "insert into wink (id,name,sex,age,address,birth) values (?, ?, ?, ?, ?, ?)"

hValue("id", ) hValue("name", )

hValue("sex", )

hValue("age", )

hValue("address", )

hValue("birth", )

()

Try

eNonQuery()

Catch sqlExceptionErr As eption

(e)

Finally

()

End Try

Call Form2_Load(sender, e)

MsgBox("添加成功!", ation, "提示")

End Sub

三、2008数据库操作简要总结

上述六种方法基本结构较为相似,大部分代码都相同,只是CommandText属性里的内容不同。读者也可以将CommandText属性的内容由添加记录扩展到删除记录、修改记录。

MsgBox提示“添加成功”的代码放置位置不是最佳,读者可以自己思考放在哪里更为合适。

作者首选推荐的是方法3,参数化方式增加数据库记录方法(2008及以后);其次推荐方法5,使用存储过程添加记录的方法;再次推荐方法4,以行提交的方式插入数据库记录方法。不推荐使用方法1,虽然理解上很简单,但是隐患很多。对于方法6笔者未做太深入的研究,可能会在未来的编程中使用到。

不过要想进行大型数据库编程还是要使用企业级的数据库编程方法,使用上述方法在企业级应用时效率较差。

2023年6月21日发(作者:)

VBNET2008六种添加记录方法学习笔记

(图例、源码、说明)

(本文代码2008 + SQL Server 2005下测试通过。)

VB6.0向过渡后,很多编程爱好者对数据库编程感到迷惑,本文通过对国内教材、国外教材、老教材、新教材的研究,将作者看到过的6种(insert语句、参数化3种、行提交、存储过程、)添加(增加)记录的方法提炼出来,并分析了各种添加记录的优点、缺点及是否常用等做了简单叙述。读者可以根据这些方法编写出对应的增删改查(CRUD)代码,使自己的程序编写的更加容易理解,提高编程效率,提升程序的运行速度。

百度文库首发,侵权必究。

一、前期准备工作(图例)

1、引用数据库命名空间

使用数据库对象时要首先导入数据库命名空间,数据库对象的命名空间根据你所使用的数据库不同,命名空间也不一样。本文使用的是SQL Server的命名空间。

Imports ent

2、界面设计

1个Datagridview控件,5个TextBox控件,1个DateTimePicker控件,5个按钮控件。具体控件示例如下:

3、在Datagridview表格中预览数据库记录

简单的查询了这个表的所有记录。 Private Sub dataView()

Dim objConn As New nection

Dim objDa As New aAdapter

Dim objComm As New mand

Dim objDs As New DataSet

tionString = "Data Source=172.30.76.249;Initial Catalog=ldg;User

ID=wink;Pwd=wcp6810662"

dText = "select * from wink"

tion = objConn

Command = objComm

()

(objDs, "wink")

()

urce = ("wink")

End Sub

4、窗体加载时调用dataView()过程预览数据库记录

窗体的

Form2_Load方法在本文的程序代码段中多次被调用以刷新表格,读者可以直接调用dataView()过程刷新表格。

Private Sub Form2_Load(ByVal sender As , ByVal e As rgs) Handles

Call dataView()

End Sub

二、添加记录的六种方法及简要分析(源码及说明)

请注意代码段使用时注意控件名称,否则复制粘贴后容易出现错误。

1、使用INSERT语句添加记录方法:

直接使用SQL的INSERT语句在数据库中添加记录,这种方法大家会经常见到,此种方法较为初级,数据库字段较多时不便于维护,但较为直观,很多初学者使用此方法。

按钮2代码如下:

Private Sub Button2_Click(ByVal sender As , ByVal e As rgs) Handles

Dim objConn As New nection

Dim objComm As New mand

tionString = "Data Source=172.30.76.249;Initial Catalog=ldg;User

ID=wink;Pwd=wcp6810662"

tion = objConn

Dim sql As String

sql = "insert into wink (id,name,sex,age,address,birth) values('" & ng().Trim() & "','" &

ng().Trim() & " ','" & ng().Trim() & " ','" &

ng().Trim() & " ','" & ng().Trim() & " ','" & & "') "

dText = sql

()

Try

eNonQuery()

Catch sqlExceptionErr As eption

(e)

Finally

()

End Try

Call Form2_Load(sender, e)

MsgBox("添加成功!", ation, "提示")

End Sub 2、参数化方式增加数据库记录方法(2008之前):

这种添加记录的方法2008之前较为常用,2008版本之后方法被覆写为hValue方法。该方法的好处是可以在数据记录进入数据库之前控制各个字段的类型,缺点是编程时写代码较为麻烦。

按钮3代码如下:

Private Sub Button3_Click(ByVal sender As , ByVal e As rgs) Handles

Dim objConn As New nection

Dim objComm As New mand

Dim insert As String

insert = "insert into wink (id,name,sex,age,address,birth)"

insert = insert & "values (@id,@name,@sex,@age,@address,@birth)"

tionString = "Data Source=172.30.76.249;Initial Catalog=ldg;User

ID=wink;Pwd=wcp6810662"

tion = objConn

dText = insert

("@id", ).Value = Trim()

("@name", r).Value = Trim()

("@sex", r).Value = Trim()

("@age", ).Value = Trim()

("@address", r).Value = Trim()

("@birth", me).Value = DateValue()

()

Try

eNonQuery()

Catch sqlExceptionErr As eption

(e)

Finally

()

End Try

Call Form2_Load(sender, e)

MsgBox("添加成功!", ation, "提示")

End Sub

3、参数化方式增加数据库记录方法(2008及以后):

这种添加记录的方法使用hValue的属性实现以参数化方式增加记录。以参数化方式增加数据库记录的明显优势是字段关系清晰,并且避免了SQLServer本身的一些漏洞,如注释语句产生的问题。当以参数化的方式添加记录时要考虑SqlCommand类的CommandText属性,需要在SQL语句中使用“@”指明参数;SqlCommand类Parameter属性是SqlParameter参数集合,需要使用Add或AddWithValue方法向集合中添加参数,然后才能使用具体参数的Value属性进行赋值操作。

按钮4代码如下:

Private Sub Button4_Click(ByVal sender As , ByVal e As rgs) Handles

Dim objConn As New nection

Dim objComm As New mand tionString = "Data Source=172.30.76.249;Initial Catalog=ldg;User

ID=wink;Pwd=wcp6810662"

tion = objConn

dText = "insert into wink (id,name,sex,age,address,birth) values

(@id,@name,@sex,@age,@address,@birth)"

hValue("@id", )

hValue("@name", )

hValue("@sex", )

hValue("@age", )

hValue("@address", )

hValue("@birth", DateValue())

()

Try

eNonQuery()

Catch sqlExceptionErr As eption

(e)

Finally

()

End Try

Call Form2_Load(sender, e)

MsgBox("添加成功!", ation, "提示")

End Sub

4、以行提交的方式插入数据库记录方法:

使用SqlCommand命令对象与数据库交互,并插入新记录。当应用程序使用数据集存储记录时,可以使用TableAdapter类的Update()方法,该方法会将所有更改(包括更新、插入及删除)发送到数据库中。这种方法在国产的教材、教程、书籍中较为常见。

按钮5代码如下:

Private Sub Button5_Click(ByVal sender As , ByVal e As rgs) Handles

Dim strSql As String

Dim strConn As String

Dim objDA As aAdapter

Dim objds As New t

Dim objcb As mandBuilder

Dim objrow As w

strConn = "Data Source=172.30.76.249;Initial Catalog=ldg;User ID=wink;Pwd=wcp6810662"

strSql = "select * from wink"

objDA = New aAdapter(strSql, strConn)

objcb = New mandBuilder(objDA)

(objds, "wink")

objrow = ("wink").NewRow

objrow("id") = Trim()

objrow("name") = Trim()

objrow("sex") = Trim()

objrow("age") = Trim()

objrow("address") = Trim()

objrow("birth") = DateValue()

("wink").(objrow)

(objds, "wink")

Call Form2_Load(sender, e)

MsgBox("添加成功!", ation, "提示")

End Sub

End Class

5、使用存储过程添加记录的方法: 由于时间关系此处用到的数据库是Oracle数据库,但与SQLServer基本相似。是一种比较偏向于企业级的添加记录的方法。该方法减少了本地处理时间,但是增加了数据库的负担。并且可以通过存储过程的编程更加灵活地添加记录。

按钮代码如下:

Private Sub Button4_Click(ByVal sender As , ByVal e As rgs) Handles

Dim objCmd As New Command()

tion = New Connection(strConn)

dText = "t"

dType = Procedure

("Pro_A", r).Value =

("Pro_B", r).Value =

("Pro_C", r).Value =

("Pro_D", r).Value =

("Pro_S", me).Value =

'("io_cursor", ).Direction =

Dim objDA As New DataAdapter(objCmd)

Dim objDs As New DataSet()

(objDs, "test")

Call GridView()

End Sub

存储过程代码如下:

create or replace procedure addTest(

Pro_A TEST.A%type,

Pro_B TEST.B%type,

Pro_C TEST.C%type,

Pro_D TEST.D%type,

Pro_S TEST.S%type)

as

begin

insert into TEST (A,B,C,D,S)

values(Pro_A,Pro_B,Pro_C,Pro_D,Pro_S);

-------------------------------4个参数

commit;

end;

6、参数化及占位符方式增加数据库记录方法:

该方法与JAVA中使用SQL添加记录的方法较为相似,是方法3的一种变化,是较新的方法。该方法使用“?”进行站位,并且按照数据库中字段的顺序进行赋值。使用时要注意“?”的个数应与字段个数一致,否则将出现错误。

按钮1代码如下:

Private Sub Button1_Click(ByVal sender As , ByVal e As rgs) Handles

Dim objConn As New nection

Dim objComm As New mand

tionString = "Data Source=172.30.76.249;Initial Catalog=ldg;User

ID=wink;Pwd=wcp6810662"

tion = objConn

dText = "insert into wink (id,name,sex,age,address,birth) values (?, ?, ?, ?, ?, ?)"

hValue("id", ) hValue("name", )

hValue("sex", )

hValue("age", )

hValue("address", )

hValue("birth", )

()

Try

eNonQuery()

Catch sqlExceptionErr As eption

(e)

Finally

()

End Try

Call Form2_Load(sender, e)

MsgBox("添加成功!", ation, "提示")

End Sub

三、2008数据库操作简要总结

上述六种方法基本结构较为相似,大部分代码都相同,只是CommandText属性里的内容不同。读者也可以将CommandText属性的内容由添加记录扩展到删除记录、修改记录。

MsgBox提示“添加成功”的代码放置位置不是最佳,读者可以自己思考放在哪里更为合适。

作者首选推荐的是方法3,参数化方式增加数据库记录方法(2008及以后);其次推荐方法5,使用存储过程添加记录的方法;再次推荐方法4,以行提交的方式插入数据库记录方法。不推荐使用方法1,虽然理解上很简单,但是隐患很多。对于方法6笔者未做太深入的研究,可能会在未来的编程中使用到。

不过要想进行大型数据库编程还是要使用企业级的数据库编程方法,使用上述方法在企业级应用时效率较差。