目录
一、 C#访问SqlServer数据库
二、 C#异步读取SqlServer数据库
三、 C#访问Mysql数据库
四、 C#访问Oracle数据库
在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#中异步读取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,循环将结束。
请注意以下几点:
此外,如果你使用的是.NET Core或.NET 5/6/7+等较新的版本,你还可以考虑使用Entity Framework Core(EF Core)这样的ORM框架,它提供了更高级别的抽象和异步API来访问数据库。
异步编程是处理I/O密集型操作(如数据库访问)时的重要技术,它能够提高应用程序的响应性和吞吐量。
在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()); |
|
} |
|
} |
|
} |
在这个示例中:
请注意,和SQL Server一样,你应该避免在代码中硬编码数据库凭据。在生产环境中,应该使用安全的方式存储和检索这些凭据。
此外,你还可以使用MySqlDataAdapter和DataSet来执行更复杂的数据库操作,如插入、更新和删除数据,以及断开式数据处理。
确保你的MySQL Connector/NET库版本与你的MySQL服务器版本兼容,并经常检查是否有更新,以确保安全性和性能。
在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()); |
|
} |
|
} |
|
} |
在这个示例中:
请注意,Oracle的连接字符串可能因Oracle数据库的版本和配置而有所不同。确保你使用正确的连接字符串格式。
同样,你应该避免在代码中硬编码数据库凭据。在生产环境中,应该使用安全的方式存储和检索这些凭据。
ODP.NET还提供了OracleDataAdapter和DataSet,以便执行更复杂的数据库操作,如插入、更新和删除数据,以及断开式数据处理。
最后,请确保你使用的ODP.NET版本与你的Oracle数据库版本兼容,并经常检查Oracle官方网站以获取最新的驱动程序和更新。