如何使用 ADO.NET 和 Visual C# .NET 连接到数据库并运行命令
来源:互联网 发布:数据备份的方式 编辑:程序博客网 时间:2024/06/06 02:06
本页
概要
本文分步介绍如何使用 ADO.NET 连接到数据库并运行命令。
• 数据库术语 • 结构化查询语言 (SQL)
使用 ADO,可通过 Command、Connection 或 Recordset 对象发出命令。在 ADO.NET 中,只有 Command 对象(SqlCommand 或 OleDbCommand)运行命令。
要运行命令,请按照下列步骤操作: 1. 按照下列步骤在 Visual C# .NET 中创建一个新的控制台应用程序: a. 启动 Visual Studio .NET。 b. 在文件菜单上,指向新建,然后单击项目。 c. 在新建项目对话框中,单击项目类型下的 Visual C# 项目,然后单击模板下的控制台应用程序。 2. 确保项目中包含对 System.Data 命名空间的引用,如果不包含,请添加一个引用。 3. 对 System 和 System.Data 命名空间使用 using 语句,这样,在后面的代码中就无需限定这些命名空间中的声明了。也可以包含 System.Data.SqlClient 或 System.Data.OleDb,具体取决于所使用的命名空间。
对于 OleDb 连接:
注意:用户 ID <UID> 必须具有相应的权限才能对数据库执行这些操作。
注意:用户 ID <UID> 必须具有相应的权限才能对数据库执行这些操作。
要在命令中使用参数,请按照下列步骤操作: 1. 创建 OleDbConnection 或 SqlConnection 对象,就像在如何运行命令一节中那样。 2. 用占位符(例如,“@emp_id”或“@fname”)替换这些值,以使命令文本使用参数。请参见这些步骤前面的 DELETE 语句作为示例。 3. 创建 OleDbCommand 或 SqlCommand 对象,并传入在第 1 步中创建的连接对象以及包含参数占位符的命令文本。 4. 对于每个参数,在命令对象的参数集中添加一个参数对象。对于每个参数,必须指定名称和数据类型。
要求
下面列出了推荐使用的硬件、软件、网络基础结构以及所需的 Service Pack: • Microsoft Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server 或 Windows NT 4.0 Server • 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. 按照下列步骤在 Visual C# .NET 中创建一个新的控制台应用程序: a. 启动 Visual Studio .NET。 b. 在文件菜单上,指向新建,然后单击项目。 c. 在新建项目对话框中,单击项目类型下的 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 用于不返回任何结果的命令(如 DELETE、UPDATE 和 INSERT 语句)。如果运行该语句时没有引发任何异常(请参见以下代码),则说明已对数据库成功执行了该命令。 objCmd.ExecuteNonQuery();
9. 保存项目。在调试菜单上,单击启动以对数据库运行命令。 如何使用参数
对数据库运行命令(例如,UPDATE、INSERT 和 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/voices/data.asp (http://msdn.microsoft.com/voices/data.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)
有关更多信息,请参阅以下图书: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/voices/data.asp (http://msdn.microsoft.com/voices/data.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)
Sharp、John 和 Jon Jagger。Microsoft Visual C# .NET Step by Step (http://go.microsoft.com/fwlink/?LinkId=8388 )。Microsoft Press, 2001。
有关更多信息,请参阅以下 Microsoft 培训和认证课程:2389 使用 ADO.NET 编程
http://www.microsoft.com/TRAINCERT/SYLLABI/2389BPRELIM.ASP (http://www.microsoft.com/TRAINCERT/SYLLABI/2389BFINAL.ASP)
如果您对本文有什么意见或建议,请发送电子邮件至 Visual C# .NET 文章反馈 (mailto:vcskb@microsoft.com?subject=Q306636 Feedback). http://www.microsoft.com/TRAINCERT/SYLLABI/2389BPRELIM.ASP (http://www.microsoft.com/TRAINCERT/SYLLABI/2389BFINAL.ASP)
这篇文章中的信息适用于:
• Microsoft Visual C# .NET 2002 标准版- 如何使用 ADO.NET 和 Visual C# .NET 连接到数据库并运行命令
- 如何通过使用 ADO.NET 2005 和 Visual C# 2005 或使用 ADO.NET 和 Visual C# .NET 连接到数据库并运行命令
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- C#使用ADO.net连接数据库
- 使用vb.net连接到数据库并执行命令
- 如何使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程
- 如何使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程
- 如何使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程
- 如何使用 ADO.NET 和 Visual C++ .NET 以编程方式创建 SQL Server 数据库
- Visual Basic.NET中用ADO.NET和ODBC.NET连接各种数据库的方法
- C#中利用ADO.NET连接和查询SQL数据库
- 使用 Visual C# .NET 在 ADO.NET 中以编程方式构建连接字符串
- HOW TO:使用 Visual C# .NET 在 ADO.NET 中以编程方式构建连接字符串
- ADO.NET连接数据库的命令格式
- 原来我有BLOG可以用的
- ASP.NET中大结果集的分页[翻译]
- 一个spring框架的AOP例子
- SQL还原master数据库应注意的问题
- 在Windows2003下安装Blackice导致蓝屏的解决办法
- 如何使用 ADO.NET 和 Visual C# .NET 连接到数据库并运行命令
- links
- 单元测试的扩展:mock object
- 111
- GNU/Linux 离统治全球桌面仅剩10,000 个bugs 的距离
- VS.NET 2003 控件命名规范(Asp.net版)
- 是什么催化了Linux台式机迅速走红市场
- Team Architect Edition 应用程序设计器简介,第一部分
- Team Architect Edition 应用程序设计器简介,第二部分