你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / 数据库开发
如何使用 ADO.NET 和 Visual Basic .NET 连接到数据库并运行命令
 

概要

本文介绍如何通过 Visual Basic .NET 控制台应用程序使用 ADO.NET 连接数据库并运行命令(如 UPDATEINSERT DELETE 命令)。

要求

下表列出了推荐使用的硬件、软件、网络基础结构以及所需的 Service Pack

Microsoft Windows XPMicrosoft Windows Server 2003Microsoft Windows 2000 ProfessionalMicrosoft Windows 2000 ServerMicrosoft Windows 2000 Advanced Server Microsoft Windows NT 4.0 Server

Microsoft Visual Studio .NET

本文假定您熟悉下列主题:

数据库术语

结构化查询语言 (SQL)

 

如何运行命令

可以向数据库发出命令,以针对数据存储区执行操作,它包括可向数据库发出的任何语句。可以使用 OleDbCommand SqlCommand 类获取向数据存储区发出的命令,OleDbCommand 可以是数据存储区所特有的。本文介绍了 ADO.NET 中的 SqlClient 类(用于连接到运行 Microsoft SQL Server 的计算机)和 OleDb 类(用于装有 OLE DB ODBC 驱动程序的任何数据库)。然而,对于这两个类来说,该代码通常是相同的。

通过使用 ADO,可通过 CommandConnection Recordset 对象发出命令。在 ADO.NET 中,只有 Command 对象(SqlCommand OleDbCommand)运行命令。

若要运行命令,请按照下列步骤操作:

1.

按照下列步骤在 Visual Basic .NET 中创建新的控制台应用程序:

a.

启动 Visual Studio .NET

b.

文件菜单上,指向新建,然后单击项目

c.

新建项目对话框中,单击项目类型下面的 Visual Basic 项目,然后单击模板下面的控制台应用程序

2.

确保项目中包含对 System.Data 命名空间的引用,如果不包含,请添加一个引用。

3.

System System.Data 命名空间上使用 Imports 语句,这样,在后面的代码中就无需限定这些命名空间中的声明了。也可以包含 System.Data.SqlClient System.Data.OleDb,具体取决于所使用的命名空间。

Imports System Imports System.Data Imports System.Data.SqlClient

4.

在创建与数据库的连接之前,必须具有一个连接字符串。连接字符串包含建立数据库连接所需的所有信息,包括服务器名称、数据库名称、用户 ID 以及密码。例如,以下连接字符串指向运行 SQL Server 的本地计算机,帐户为 <username>,密码为增强密码:

对于 OleDb 连接:

Provider=SQLOLEDB.1;User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=(local)

对于 SqlClient 连接:

User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=(local)

注意:如果需要有关如何确定数据库的连接字符串的更多帮助,请在以下 Microsoft Web 站点的 Microsoft Developer Network (MSDN) 库中搜索“ConnectionString”

http://search.microsoft.com/us/dev/default.asp (http://search.microsoft.com/us/dev/default.asp)

5.

Visual Studio 创建一个模块和一个空的 Main() 过程。在该过程中,声明一个字符串变量并存储数据库的相应连接字符串:

Sub Main() Dim sConnectionString As String _ = "User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=(local)" End Sub

6.

使用此连接字符串,新建 OleDbConnection SqlConnection 对象,并调用其 Open 方法以建立与数据库的连接:

Dim objConn As New SqlConnection(sConnectionString) objConn.Open()

7.

创建 SqlCommand OleDbCommand 对象,并传入要运行的命令以及在上一步中创建的连接对象。以下示例代码将传入 INSERT 语句:

Dim sSQL As String = "INSERT INTO Employee " & _ "(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date)" & _ "VALUES ('MSD12923F', 'Duncan', 'W', 'Mackenzie', " & _ "10, 82,'0877','2001-01-01')" Dim objCmd As New SqlCommand(sSQL, objConn)

8.

在创建 SqlCommand OleDbCommand 对象之后,可调用 ExecuteNonQuery 方法以运行它所表示的命令。ExecuteNonQuery 用于不返回任何结果的命令(如 DELETEUPDATE INSERT 语句)。如果在运行 Execute 语句时不引发任何异常(请参见下列代码),则说明已针对数据库成功执行了该命令。

objCmd.ExecuteNonQuery()

9.

保存项目。在调试菜单上,单击启动以针对数据库运行命令。

 

如何使用参数

针对数据库运行命令(例如,UPDATEINSERT DELETE 语句或存储过程调用)时,通常将这些命令参数化。这样,命令就可以一次创建、多次执行,执行时使用插入的不同值来代替参数。请考虑与上面部分中使用的 INSERT 语句相对应的 DELETE 语句:

Dim sSQL As String = "DELETE FROM Employee WHERE emp_id = @emp_id"

DELETE 语句中的参数名称(“@emp_id”)表示一个参数,每次运行该命令时,可用不同的值替换该参数。

若要在命令中使用参数,请按照下列步骤操作:

1.

创建 OleDbConnection SqlConnection 对象(如如何运行命令一节所述)。

2.

用占位符(例如,“@emp_id”“@fname”)替换这些值,以使命令文本使用参数。请参见这些步骤前面的 DELETE 语句作为示例。

3.

创建 OleDbCommand SqlCommand 对象,并传入在第 1 步中创建的连接对象以及包含参数占位符的命令文本。

4.

对于每个参数,在命令对象的参数集中添加一个参数对象。对于每个参数,必须指定名称和数据类型。

objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9)

5.

存储过程可以使用返回值和输出参数的参数。运行查询之前,还必须为每个输入参数设置值:

objCmd.Parameters.Item("@emp_id").Value = "MSD12923F"

6.

按照以下方式运行查询:

Try objCmd.ExecuteNonQuery() Console.WriteLine("Record Deleted") Catch e As Exception Console.WriteLine(e.ToString) End Try Console.WriteLine("Record Deleted") Console.Read()

 

完整代码列表

Imports System Imports System.Data Imports System.Data.SqlClient Module Module1 Sub Main() AddRecord() RemoveRecord() Pause() End Sub Sub Pause() Console.WriteLine("Press Enter To Continue...") Console.ReadLine() End Sub Sub AddRecord() Dim sConnectionString As String _ = "User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=(local)" Dim objConn As New SqlConnection(sConnectionString) objConn.Open() Dim sSQL As String = "INSERT INTO Employee " & _ "(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date)" & _ "VALUES ('MSD12923F', 'Duncan', 'W', 'Mackenzie', " & _ "10, 82,'0877','2001-01-01')" Dim objCmd As New SqlCommand(sSQL, objConn) Try objCmd.ExecuteNonQuery() Catch e As Exception Console.WriteLine(e.Message) End Try Console.WriteLine("Record Added") End Sub Sub RemoveRecord() Dim sConnectionString As String _ = "User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=(local)" Dim objConn As New SqlConnection(sConnectionString) objConn.Open() Dim sSQL As String = "DELETE FROM Employee WHERE emp_id = @emp_id" Dim objCmd As New SqlCommand(sSQL, objConn) objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9) objCmd.Parameters.Item("@emp_id").Value = "MSD12923F" Try objCmd.ExecuteNonQuery() Console.WriteLine("Record Deleted") Catch e As Exception Console.WriteLine(e.ToString) End Try Console.WriteLine("Record Deleted") Console.ReadLine() End Sub End Module

参考

有关如何使用 ADO.NET、数据库命令和存储过程的更多信息,请访问以下 Microsoft Web 站点:

SQL Server 2000 存储过程
http://msdn.microsoft.com/library/psdk/sql/cm_8_des_07_31vb.htm
(http://msdn.microsoft.com/library/psdk/sql/cm_8_des_07_31vb.htm)

MSDN Voices
专栏:再谈在 .NET 应用程序中使用 ADO”
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndive/html/data08092001.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndive/html/data08092001.asp)

面向 ADO 程序员的 ADO.NET
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/adonetprogmsdn.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/adonetprogmsdn.asp)

MSDN Online .NET
开发人员中心
http://msdn.microsoft.com/net
(http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28000519)

有关 ADO.NET Visual Basic .NET 的更多常规信息,请访问以下 MSDN 新闻组:

microsoft.public.dotnet.framework.adonet (http://go.microsoft.com/fwlink/?linkid=5819)

microsoft.public.dotnet.languages.vb
(http://go.microsoft.com/fwlink/?linkid=5820)


这篇文章中的信息适用于:

Microsoft ADO.NET 1.1

Microsoft ADO.NET 1.0

Microsoft Visual Basic .NET 2003 标准版

Microsoft Visual .NET 2002 标准版

 

(转自:MSDN)(编辑:Alex

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089