在C#中,连接数据库是开发应用程序时常见的需求,尤其在处理数据存储、检索和更新等操作时。本文将深入探讨“C#连接数据库原始方法”,解析如何使用ADO.NET库中的SqlConnection类来实现与SQL Server数据库的连接,并通过示例代码详细说明连接数据库的步骤、执行SQL命令以及读取结果集的过程。 ### 连接数据库 创建一个SqlConnection对象,它是C#中用于建立与SQL Server数据库连接的关键组件。在代码中,我们首先实例化了SqlConnection对象`dataConnection`: ```csharp SqlConnection dataConnection = new SqlConnection(); ``` 接着,我们需要配置连接字符串(`ConnectionString`),它包含了数据库服务器的地址、数据库名称、用户名和密码等信息。在本例中,连接字符串被硬编码为: ```csharp string cString = "DataSource=SH4-LT-LUKE;InitialCatalog=Northwind;UserID=u_northwind;Password=u_northwind;"; ``` 此外,也可以使用`SqlConnectionStringBuilder`类动态构建连接字符串,这在实际应用中更为灵活安全: ```csharp SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); builder.DataSource = "(SH4-LT-LUKE)"; builder.InitialCatalog = "Northwind"; builder.UserID = "u_northwind"; builder.Password = "u_northwind"; ``` 然后,将构建好的连接字符串赋值给`SqlConnection`对象: ```csharp dataConnection.ConnectionString = cString; ``` 在连接数据库之前,调用`Open()`方法打开连接: ```csharp dataConnection.Open(); ``` ### 执行SQL命令 为了查询数据库,我们需要创建一个SqlCommand对象,该对象封装了将要执行的SQL语句及其参数。在本例中,我们要查询Orders表中特定客户的订单信息: ```csharp SqlCommand dataCommand = new SqlCommand(); dataCommand.Connection = dataConnection; dataCommand.CommandType = CommandType.Text; dataCommand.CommandText = "SELECT OrderID, OrderDate, ShippedDate, ShipName, ShipAddress, ShipCity, ShipCountry FROM Orders WHERE CustomerID=@CustomerIdParam"; ``` 接着,添加参数以确保SQL语句的安全性及灵活性: ```csharp SqlParameter param = new SqlParameter("@CustomerIdParam", SqlDbType.Char, 5); param.Value = customerId; dataCommand.Parameters.Add(param); ``` 在执行SQL命令前,可以使用控制台输出语句告知用户即将进行的操作: ```csharp Console.WriteLine("About to find orders for customer {0}\n\n", customerId); ``` ### 读取结果集 我们通过`ExecuteReader()`方法执行SQL命令并获取结果集,使用SqlDataReader对象逐行读取数据: ```csharp SqlDataReader dataReader = dataCommand.ExecuteReader(); ``` 在读取结果集中,`Read()`方法用于移动到下一行,而`GetInt32()`, `GetDateTime()`, `GetString()`等方法则用来提取特定列的数据: ```csharp while (dataReader.Read()) { int orderId = dataReader.GetInt32(0); if (dataReader.IsDBNull(2)) { Console.WriteLine("Order {0} not yet shipped\n\n", orderId); } else { DateTime orderDate = dataReader.GetDateTime(1); DateTime shipDate = dataReader.GetDateTime(2); string shipName = dataReader.GetString(3); string shipAddress = dataReader.GetString(4); string shipCity = dataReader.GetString(5); string shipCountry = dataReader.GetString(6); Console.WriteLine("Order: {0}\nPlaced: {1}\nShipped: {2}\nTo Address: {3}\n{4}\n{5}\n{6}\n\n", orderId, orderDate, shipDate, shipName, shipAddress, shipCity, shipCountry); } } ``` ### 错误处理与资源清理 在处理数据库操作时,错误处理至关重要。本例中,我们使用try-catch块捕获并处理可能发生的`SqlException`: ```csharp catch (SqlException e) { Console.WriteLine("Error accessing the database: {0}", e.Message); } ``` 在finally块中关闭数据库连接,确保资源得到释放: ```csharp finally { dataConnection.Close(); } ``` 以上就是C#连接数据库的原始方法,包括建立连接、执行SQL命令、读取结果集以及异常处理等关键步骤。通过这种方式,开发者能够有效地与SQL Server数据库交互,实现数据的读写操作。
try
{
//2.构造连接字符串
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
string cString = "Data Source=SH4-LT-LUKE;Initial Catalog=Northwind;User ID=u_northwind;Password=u_northwind;";
//builder.DataSource = "(SH4-LT-LUKE)";
//builder.InitialCatalog = "Northwind";
//builder.IntegratedSecurity = true;
//3.把连接字符串赋值给dataConnection对象
//dataConnection.ConnectionString = builder.ConnectionString;
dataConnection.ConnectionString = cString;
//4.打开连接
dataConnection.Open();
//要求用户输入客户ID
Console.Write("Please enter a customer ID(5 characters):");
string customerId = Console.ReadLine();
//5.构建SqlCommand
SqlCommand dataCommand = new SqlCommand();
//5.1把打开的连接传给dataCommand的Connection对象
dataCommand.Connection = dataConnection;
//5.2设置命令的类型和语句
dataCommand.CommandType = CommandType.Text;
dataCommand.CommandText =
- 粉丝: 8
- 资源: 181
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 使用Java语言编写的九格拼游戏,找寻下曾经小时候的记忆.zip
- gakataka课堂管理系统
- 一个简单ssh(spring springMVC hibernate)游戏网站,在网上找的html模板,没有自己写UI,重点放在java后端上.zip
- 一个采用MVC架构设计、Java实现的泡泡堂游戏.zip
- 一个简易的对对碰游戏软件,运用Java、Java FX技术.zip
- 通过binder实现进程间通讯 ,可以使用service的binder或者 AIDL生成的Stub返回binder 实现demo
- 44f2abdbd6faa9938f9d8e4cace85309.JPG
- 一个简易的躲避子弹飞机小游戏,基于最简单的java ui.zip
- 一个西洋跳棋小游戏,写成桌面Java程序,实现了人机对战,对博弈树的遍历进行了极大极小值的alpha-beta剪枝算法进行优化.zip
- 一些java的小游戏项目,贪吃蛇啥的.zip