如何通过使用 ADO.NET 2005 和 Visual C# 2005 或使用 ADO.NET 和 Visual C# .NET 连接到数据库并运行命令
2007-03-28 11:13
1346 查看
如何通过使用 ADO.NET 2005 和 Visual C# 2005 或使用 ADO.NET 和 Visual C# .NET 连接到数据库并运行命令
察看本文应用于的产品function loadTOCNode(){}
文章编号 | : | 306636 |
最后修改 | : | 2007年3月19日 |
修订 | : | 4.3 |
本页
概要
要求
如何运行命令
如何使用参数
完整代码列表
参考
var sectionFilter = "type != 'notice' && type != 'securedata' && type != 'querywords'";
var tocArrow = "/library/images/support/kbgraphics/public/en-us/downarrow.gif";
var depthLimit = 10;
var depth3Limit = 10;
var depth4Limit = 5;
var depth5Limit = 3;
var tocEntryMinimum = 1;
<style>.toc{display: none;}</style>
概要
loadTOCNode(1, 'summary');本文分步介绍如何使用 ADO.NET 2005 或 ADO.NET 连接到数据库并运行命令。
回到顶端
要求
loadTOCNode(2, 'summary');下面的列表列出了推荐使用的硬件、软件、网络基础设施以及所需的 Service Pack:
• | Microsoft Windows Server 2003、Microsoft Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server 或 Microsoft Windows NT 4.0 Server |
• | Microsoft Visual Studio 2005 或 Microsoft Visual Studio .NET |
• | 数据库术语 |
• | 结构化查询语言 (SQL) |
回到顶端
如何运行命令
loadTOCNode(2, 'summary');可以向数据库发出命令,以针对数据存储区执行操作,以及包括可向数据库发出的任何语句。可以使用“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 中创建新的控制台应用程序,请按照下列步骤操作:
| ||||||
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. | 保存项目。在“调试”菜单上,单击“启动”以对数据库运行命令。 |
回到顶端
如何使用参数
loadTOCNode(2, 'summary');对数据库运行命令(例如,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 |
回到顶端
完整代码列表
loadTOCNode(2, 'summary');注意:运行此代码之前,必须将 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");
}
}
回到顶端
参考
loadTOCNode(1, 'references');有关如何使用 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://msdn2.microsoft.com/en-us/library/ms973217.aspx (http://msdn2.microsoft.com/en-us/library/ms973217.aspx)
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://www.microsoft.com/MSPress/books/6703.asp). Microsoft Press, 2003.
有关更多信息,请参见以下 Microsoft 培训和认证课程: 2389 使用 ADO.NET 编程
http://www.microsoft.com/TRAINCERT/SYLLABI/2389BPRELIM.ASP
相关文章推荐
- 如何使用 ADO.NET 和 Visual C# .NET 连接到数据库并运行命令
- 如何使用 Visual C# 2005 或 Visual C# .NET 通过 DataSet 对象更新数据库
- 如何使用 Visual C# 2005 或 Visual C# .NET 通过 DataSet 对象更新数据库
- 如何使用 ADO.NET 和 Visual C# .NET 以编程方式创建 SQL Server 数据库
- 如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据[转载MSDN]
- 如何使用 WebBrowser 控件在 Visual C# 2005 或 Visual C# .NET 中打开 Office 文档
- 如何使用 WebBrowser 控件在 Visual C# 2005 或 Visual C# .NET 中打开 Office 文档
- 如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据
- [转载]如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据
- 如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据
- 如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据
- 如何使用 WebBrowser 控件在 Visual C# 2005 或 Visual C# .NET 中打开 Office 文档
- 如何使用 WebBrowser 控件在 Visual C# 2005 或 Visual C# .NET 中打开 Office 文档
- 如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据
- 如何使用 AllowPartiallyTrustedCallers 属性来调用具有一个强名称从 Web 页通过使用 Visual C#.NET、 Visual C# 2005年或更高版本的程序集
- 如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据
- 如何使用 WebBrowser 控件在 Visual C# 2005 或 Visual C# .NET 中打开 Office 文档
- 如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据
- 如何使用 WebBrowser 控件在 Visual C# 2005 或 Visual C# .NET 中打开 Office 文档
- (转)如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据