C#系列-访问SqlServer+Mysql+Oracle数据库(6)
目录
一、 C#访问SqlServer数据库
二、 C#异步读取SqlServer数据库
三、 C#访问Mysql数据库
四、 C#访问Oracle数据库
- 一,C#访问SqlServer数据库
在C#中访问SQL Server数据库,你通常会使用ADO.NET (ActiveX Data Objects .NET),它是.NET Framework提供的一组用于访问数据的类库。ADO.NET中最常用的两个组件是`SqlConnection`和`SqlCommand`。以下是一个简单的示例,演示如何在C#中连接到SQL Server数据库并执行查询:
首先,确保你的项目中已经添加了对`System.Data.SqlClient`的引用。这个引用通常在.NET项目中默认包含。
using System;
using System.Data;
using System.Data.SqlClient;
class Program
{
static void Main()
{
// SQL Server连接字符串
string connectionString = "Server=你的服务器地址;Database=你的数据库名;User Id=你的用户名;Password=你的密码;";
try
{
// 使用SqlConnection建立数据库连接
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// 使用SqlCommand执行SQL查询
using (SqlCommand command = new SqlCommand("SELECT * FROM 你的表名", connection))
{
// 使用SqlDataReader读取查询结果
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
}
}
}
}
}
catch (SqlException e)
{
// 处理异常
Console.WriteLine(e.ToString());
}
}
}
在这个示例中:
- `connectionString` 是用来连接SQL Server数据库的连接字符串。你需要将其中的`你的服务器地址`、`你的数据库名`、`你的用户名`和`你的密码`替换为实际的值。
- `SqlConnection` 类用于建立和管理与SQL Server数据库的连接。
- `SqlCommand` 类用于执行SQL命令和存储过程。
- `SqlDataReader` 类用于读取从SQL Server检索的行。
请注意,为了安全起见,不要在代码中硬编码数据库凭据(如用户名和密码)。在生产环境中,应该使用安全的方式(如配置文件、环境变量或密钥管理系统)来存储和检索这些凭据。
此外,你还可以使用`SqlDataAdapter`和`DataSet`来执行更复杂的数据库操作,如插入、更新和删除数据,以及断开式数据处理。
最后,确保你的项目引用了正确的SQL Server客户端库。对于.NET Core和.NET 5/6/7+项目,你可能需要安装`System.Data.SqlClient` NuGet包。对于较旧的.NET Framework项目,`System.Data.SqlClient`通常已经包含在内。
- 二,C#异步读取SqlServer数据库
在C#中异步读取SQL Server数据库通常涉及使用ADO.NET的异步API,特别是SqlCommand类的异步方法,如ExecuteReaderAsync,来执行查询并获取结果。以下是一个使用SqlConnection和SqlCommand异步方法从SQL Server数据库中异步读取数据的例子:
csharp代码
using System; | |
using System.Data.SqlClient; | |
using System.Threading.Tasks; | |
class Program | |
{ | |
static async Task Main(string[] args) | |
{ | |
// SQL Server连接字符串 | |
string connectionString = "Server=localhost;Database=myDatabase;User Id=myUsername;Password=myPassword;"; | |
// 异步查询数据 | |
using (SqlConnection connection = new SqlConnection(connectionString)) | |
{ | |
await connection.OpenAsync(); | |
using (SqlCommand command = new SqlCommand("SELECT * FROM myTable", connection)) | |
{ | |
// 执行异步查询并获取SqlDataReader | |
using (SqlDataReader reader = await command.ExecuteReaderAsync()) | |
{ | |
// 读取数据 | |
while (await reader.ReadAsync()) | |
{ | |
Console.WriteLine($"Column1: {reader["Column1"]}, Column2: {reader["Column2"]}"); | |
} | |
} | |
} | |
} | |
} | |
} |
在这个例子中,我们首先创建了一个SqlConnection对象,并打开了与SQL Server数据库的连接。然后,我们创建了一个SqlCommand对象,并指定了要执行的SQL查询。使用ExecuteReaderAsync方法异步执行查询并获取一个SqlDataReader对象,该对象允许我们遍历查询结果。
在while循环中,我们使用ReadAsync方法异步读取SqlDataReader中的下一行,并输出列的值。当没有更多的行可读时,ReadAsync将返回false,循环将结束。
请注意以下几点:
- 使用using语句来确保资源(如连接和命令)在使用后被正确释放。
- 使用await关键字来异步等待操作完成,从而避免阻塞主线程。
- 替换连接字符串、查询和列名为适合你的数据库设置的值。
此外,如果你使用的是.NET Core或.NET 5/6/7+等较新的版本,你还可以考虑使用Entity Framework Core(EF Core)这样的ORM框架,它提供了更高级别的抽象和异步API来访问数据库。
异步编程是处理I/O密集型操作(如数据库访问)时的重要技术,它能够提高应用程序的响应性和吞吐量。
- 三,C#访问Mysql数据库
在C#中访问MySQL数据库,你通常会使用MySQL官方提供的MySQL Connector/NET库,它提供了与ADO.NET类似的接口来与MySQL数据库进行交互。以下是一个简单的示例,演示如何在C#中连接到MySQL数据库并执行查询:
首先,确保你的项目中已经安装了MySQL Connector/NET。你可以通过NuGet包管理器来安装它。在Visual Studio中,右键点击项目 -> 选择“管理NuGet包” -> 搜索“MySql.Data” -> 点击“安装”。
csharp代码
using System; | |
using MySql.Data.MySqlClient; | |
class Program | |
{ | |
static void Main() | |
{ | |
// MySQL连接字符串 | |
string connectionString = "server=你的服务器地址;database=你的数据库名;user=你的用户名;password=你的密码;port=3306;"; | |
try | |
{ | |
// 使用MySqlConnection建立数据库连接 | |
using (MySqlConnection connection = new MySqlConnection(connectionString)) | |
{ | |
connection.Open(); | |
// 使用MySqlCommand执行SQL查询 | |
using (MySqlCommand command = new MySqlCommand("SELECT * FROM 你的表名", connection)) | |
{ | |
// 使用MySqlDataReader读取查询结果 | |
using (MySqlDataReader reader = command.ExecuteReader()) | |
{ | |
while (reader.Read()) | |
{ | |
Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1])); | |
} | |
} | |
} | |
} | |
} | |
catch (MySqlException e) | |
{ | |
// 处理异常 | |
Console.WriteLine(e.ToString()); | |
} | |
} | |
} |
在这个示例中:
- connectionString 是用来连接MySQL数据库的连接字符串。你需要将其中的你的服务器地址、你的数据库名、你的用户名和你的密码替换为实际的值。
- MySqlConnection 类用于建立和管理与MySQL数据库的连接。
- MySqlCommand 类用于执行SQL命令和存储过程。
- MySqlDataReader 类用于读取从MySQL检索的行。
请注意,和SQL Server一样,你应该避免在代码中硬编码数据库凭据。在生产环境中,应该使用安全的方式存储和检索这些凭据。
此外,你还可以使用MySqlDataAdapter和DataSet来执行更复杂的数据库操作,如插入、更新和删除数据,以及断开式数据处理。
确保你的MySQL Connector/NET库版本与你的MySQL服务器版本兼容,并经常检查是否有更新,以确保安全性和性能。
- 四,C#访问Oracle数据库
在C#中访问Oracle数据库,你通常会使用Oracle官方提供的Oracle Data Provider for .NET (ODP.NET),这是一个用于.NET应用程序的Oracle数据库驱动程序。ODP.NET提供了两种主要的接口:Oracle.ManagedDataAccess.Client(托管驱动)和Oracle.DataAccess.Client(非托管驱动,已过时并在Oracle 19c后不再推荐使用)。
以下是使用Oracle.ManagedDataAccess.Client的示例,展示如何在C#中连接到Oracle数据库并执行查询:
首先,确保你的项目中已经安装了Oracle.ManagedDataAccess.Client。你可以通过NuGet包管理器来安装它。在Visual Studio中,右键点击项目 -> 选择“管理NuGet包” -> 搜索“Oracle.ManagedDataAccess.Client” -> 点击“安装”。
csharp代码
using System; | |
using Oracle.ManagedDataAccess.Client; | |
class Program | |
{ | |
static void Main() | |
{ | |
// Oracle连接字符串 | |
string connectionString = "User Id=你的用户名;Password=你的密码;Data Source=你的Oracle服务名;"; | |
try | |
{ | |
// 使用OracleConnection建立数据库连接 | |
using (OracleConnection connection = new OracleConnection(connectionString)) | |
{ | |
connection.Open(); | |
// 使用OracleCommand执行SQL查询 | |
using (OracleCommand command = new OracleCommand("SELECT * FROM 你的表名", connection)) | |
{ | |
// 使用OracleDataReader读取查询结果 | |
using (OracleDataReader reader = command.ExecuteReader()) | |
{ | |
while (reader.Read()) | |
{ | |
Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1])); | |
} | |
} | |
} | |
} | |
} | |
catch (OracleException e) | |
{ | |
// 处理异常 | |
Console.WriteLine(e.ToString()); | |
} | |
} | |
} |
在这个示例中:
- connectionString 是用来连接Oracle数据库的连接字符串。你需要将其中的你的用户名、你的密码和你的Oracle服务名替换为实际的值。
- OracleConnection 类用于建立和管理与Oracle数据库的连接。
- OracleCommand 类用于执行SQL命令和存储过程。
- OracleDataReader 类用于读取从Oracle检索的行。
请注意,Oracle的连接字符串可能因Oracle数据库的版本和配置而有所不同。确保你使用正确的连接字符串格式。
同样,你应该避免在代码中硬编码数据库凭据。在生产环境中,应该使用安全的方式存储和检索这些凭据。
ODP.NET还提供了OracleDataAdapter和DataSet,以便执行更复杂的数据库操作,如插入、更新和删除数据,以及断开式数据处理。
最后,请确保你使用的ODP.NET版本与你的Oracle数据库版本兼容,并经常检查Oracle官方网站以获取最新的驱动程序和更新。