c#数据库连接例子
- 行业动态
- 2025-02-05
- 2916
在C#中进行数据库连接是一项常见的任务,无论是开发桌面应用程序、Web应用还是服务端程序,下面将通过一个详细的示例来展示如何在C#中连接到数据库,并执行基本的增删改查操作。
准备工作
确保你已经安装了以下工具和库:
Visual Studio(或任何支持C#的IDE)
.NET SDK
数据库系统(如SQL Server、MySQL、SQLite等)
对应的.NET数据提供程序(如System.Data.SqlClient、MySql.Data.MySqlClient等)
创建数据库和表
为了演示,我们将使用SQL Server作为数据库系统,并创建一个名为School
的数据库和一个名为Students
的表。
CREATE DATABASE School; GO USE School; GO CREATE TABLE Students ( Id INT PRIMARY KEY IDENTITY, Name NVARCHAR(50), Age INT, Grade NVARCHAR(10) ); GO
C#代码示例
我们将编写C#代码来连接这个数据库,并进行CRUD操作。
1 引入必要的命名空间
在你的C#项目中,首先需要引入必要的命名空间:
using System; using System.Data.SqlClient;
2 建立数据库连接
创建一个方法来建立与数据库的连接:
public static SqlConnection GetConnection() { string connectionString = "Server=your_server;Database=School;User Id=your_username;Password=your_password;"; return new SqlConnection(connectionString); }
请将your_server
、your_username
和your_password
替换为你的实际数据库服务器地址、用户名和密码。
3 插入数据
创建一个方法来向Students
表中插入数据:
public static void InsertStudent(string name, int age, string grade) { using (SqlConnection conn = GetConnection()) { string query = "INSERT INTO Students (Name, Age, Grade) VALUES (@Name, @Age, @Grade)"; using (SqlCommand cmd = new SqlCommand(query, conn)) { cmd.Parameters.AddWithValue("@Name", name); cmd.Parameters.AddWithValue("@Age", age); cmd.Parameters.AddWithValue("@Grade", grade); conn.Open(); int rowsAffected = cmd.ExecuteNonQuery(); Console.WriteLine($"Rows affected: {rowsAffected}"); } } }
4 查询数据
创建一个方法来查询Students
表中的所有数据:
public static void ListStudents() { using (SqlConnection conn = GetConnection()) { string query = "SELECT * FROM Students"; using (SqlCommand cmd = new SqlCommand(query, conn)) { conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine($"ID: {reader["Id"]}, Name: {reader["Name"]}, Age: {reader["Age"]}, Grade: {reader["Grade"]}"); } } } }
5 更新数据
创建一个方法来更新Students
表中的数据:
public static void UpdateStudent(int id, string name, int age, string grade) { using (SqlConnection conn = GetConnection()) { string query = "UPDATE Students SET Name = @Name, Age = @Age, Grade = @Grade WHERE Id = @Id"; using (SqlCommand cmd = new SqlCommand(query, conn)) { cmd.Parameters.AddWithValue("@Id", id); cmd.Parameters.AddWithValue("@Name", name); cmd.Parameters.AddWithValue("@Age", age); cmd.Parameters.AddWithValue("@Grade", grade); conn.Open(); int rowsAffected = cmd.ExecuteNonQuery(); Console.WriteLine($"Rows affected: {rowsAffected}"); } } }
6 删除数据
创建一个方法来删除Students
表中的数据:
public static void DeleteStudent(int id) { using (SqlConnection conn = GetConnection()) { string query = "DELETE FROM Students WHERE Id = @Id"; using (SqlCommand cmd = new SqlCommand(query, conn)) { cmd.Parameters.AddWithValue("@Id", id); conn.Open(); int rowsAffected = cmd.ExecuteNonQuery(); Console.WriteLine($"Rows affected: {rowsAffected}"); } } }
主程序入口
在Main
方法中调用这些方法来测试我们的数据库操作:
class Program { static void Main(string[] args) { // 插入数据 InsertStudent("Alice", 20, "A"); InsertStudent("Bob", 22, "B"); // 列出所有学生 ListStudents(); // 更新数据 UpdateStudent(1, "Alice Smith", 21, "A+"); // 再次列出所有学生以查看更新效果 ListStudents(); // 删除数据 DeleteStudent(2); // 最后列出所有学生以查看删除效果 ListStudents(); } }
相关问答FAQs
Q1: 如果连接字符串中的密码包含特殊字符,应该如何处理?
A1: 如果连接字符串中的密码包含特殊字符,如@
或$
,你需要对这些字符进行转义,将@
替换为@@
,建议使用安全的存储方式来管理数据库凭据,如环境变量或加密的配置文件。
Q2: 如何处理SQL注入攻击?
A2: 为了防止SQL注入攻击,应该始终使用参数化查询而不是直接拼接SQL字符串,在上面的示例中,我们使用了SqlParameter
来传递参数,这就是一种防止SQL注入的有效方法,还可以考虑使用ORM框架(如Entity Framework)来进一步简化数据库操作并提高安全性。
小编有话说
通过上述示例,我们展示了如何在C#中连接到数据库并进行基本的CRUD操作,希望这些代码能够帮助你快速上手数据库编程,如果你有任何疑问或需要进一步的帮助,请随时留言!