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

概要

本文分步介绍如何使用 ADO.NET 2005 ADO.NET 连接到数据库并运行命令。

要求

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

Microsoft Windows Server 2003Microsoft Windows 2000 ProfessionalWindows 2000 ServerWindows 2000 Advanced Server Microsoft Windows NT 4.0 Server

Microsoft Visual Studio 2005 Microsoft Visual Studio .NET

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

数据库术语

结构化查询语言 (SQL)

 

如何运行命令

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

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

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

1.

要在 Microsoft Visual C# 2005 Microsoft Visual C# .NET 中创建新的控制台应用程序,请按照下列步骤操作:

a.

启动 Microsoft Visual Studio 2005 Microsoft Visual Studio .NET

b.

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

c.

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

注意:在 Visual Studio 2005 中,请单击新建项目对话框中项目类型下的“Visual C#”,然后单击模板下的控制台应用程序

2.

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

3.

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

using System; using System.Data; using System.Data.SqlClient;

4.

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

对于 OleDb 连接:

注意:用户 ID <UID> 必须具有相应的权限才能对数据库执行这些操作。

Provider=SQLOLEDB.1;User ID=<UID>;Initial Catalog=pubs;Data Source=(local)

对于 SqlClient 连接:

User ID=<UID>;Initial Catalog=pubs;Data Source=(local)

注意:如果在确定数据库的连接字符串方面需要更多帮助,请在 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()”过程。在此过程中,声明一个字符串变量并存储数据库的相应连接字符串。

注意:用户 ID <UID> 必须具有相应的权限才能对数据库执行这些操作。

class Class1 { static void Main(string[] args) { string sConnectionString = "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)"; } }

6.

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

SqlConnection objConn = new SqlConnection(sConnectionString); objConn.Open();

7.

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

string sSQL = "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')"; SqlCommand objCmd = new SqlCommand(sSQL,objConn);

8.

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

objCmd.ExecuteNonQuery();

9.

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

 

如何使用参数

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

string sSQL = "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["@emp_id"].Value = "MSD12923F";

6.

按照以下方式运行查询:

try { objCmd.ExecuteNonQuery(); } catch (System.Exception e) { Console.WriteLine(e.Message); } Console.WriteLine("Record Deleted");

 

完整代码列表

注意:运行此代码之前,必须将 User ID =<UID> 更改为正确的值。请确保该 <UID> 具有对数据库执行此操作所需的适当权限。

using System; using System.Data; using System.Data.SqlClient; /// <summary> /// Summary description for Class1. /// </summary> class Class1 { static void Main(string[] args) { AddRecord(); RemoveRecord(); Pause(); } static void Pause() { Console.WriteLine("Press Enter To Continue...."); Console.ReadLine(); } static void AddRecord() { string sConnectionString = "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)"; SqlConnection objConn = new SqlConnection(sConnectionString); objConn.Open(); string sSQL = "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')"; SqlCommand objCmd = new SqlCommand(sSQL,objConn); try { objCmd.ExecuteNonQuery(); } catch (System.Exception e) { Console.WriteLine(e.Message); } Console.WriteLine("Record Added"); } static void RemoveRecord() { string sConnectionString = "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)"; SqlConnection objConn = new SqlConnection(sConnectionString); objConn.Open(); string sSQL = "DELETE FROM Employee WHERE emp_id = @emp_id"; SqlCommand objCmd = new SqlCommand(sSQL,objConn); objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9); objCmd.Parameters["@emp_id"].Value = "MSD12923F"; try { objCmd.ExecuteNonQuery(); } catch (System.Exception e) { Console.WriteLine(e.Message); } Console.WriteLine("Record Deleted"); } }

参考

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

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 之音专栏
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/net)

有关更多信息,请参见以下图书:

SharpJohn Jon JaggerMicrosoft Visual C# .NET Step by Step (http://www.microsoft.com/MSPress/books/6703.asp). Microsoft Press, 2003.

有关更多信息,请参见以下 Microsoft 培训和认证课程:

2389 使用 ADO.NET 编程
http://www.microsoft.com/TRAINCERT/SYLLABI/2389BPRELIM.ASP
(http://www.microsoft.com/TRAINCERT/SYLLABI/2389BFINAL.ASP)


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

Microsoft Visual C# .NET 2002 标准版

Microsoft Visual C# 2005

 

(转自:MSDN (编辑:Alex)

  推荐精品文章

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

  联系方式
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