如何用C实例操作数据库?
- 行业动态
- 2025-01-22
- 1
在C#中进行数据库操作通常涉及使用 ADO.NET、Entity Framework 等技术,以下为你介绍一个使用 ADO.NET 连接 SQL Server 数据库并进行基本操作的 C# 实例:
环境搭建
开发工具:Visual Studio 2022 或更高版本。
数据库:SQL Server 2019,安装时选择默认实例,并使用 “Windows 身份验证” 模式。
数据库创建与表设计
在 SQL Server Management Studio 中创建一个简单的数据库和数据表,假设数据库名为 “SchoolDB”,包含一个名为 “Students” 的表,其结构如下:
列名 | 数据类型 | 允许空值 | 主键/外键 |
StudentID | int | 否 | 主键 |
Name | nvarchar(50) | 否 | |
Age | int | 否 | |
Grade | nvarchar(10) | 否 |
创建数据库和表的 SQL 语句如下:
CREATE DATABASE SchoolDB; GO USE SchoolDB; GO CREATE TABLE Students ( StudentID INT PRIMARY KEY, Name NVARCHAR(50) NOT NULL, Age INT NOT NULL, Grade NVARCHAR(10) NOT NULL ); GO
C# 代码实现
1、添加引用:在 Visual Studio 中创建一个新的 C# 控制台应用程序项目,然后在项目中添加对 “System.Data” 命名空间的引用,该命名空间包含了用于数据库连接和操作的类。
2、连接数据库:编写代码连接到 SQL Server 数据库,需要提供服务器名称、数据库名称、用户名和密码等信息,以下是示例代码:
using System; using System.Data.SqlClient; namespace SchoolDBExample { class Program { static void Main(string[] args) { // 连接字符串,根据实际情况修改 string connectionString = "Server=localhost;Database=SchoolDB;Integrated Security=True"; // 创建 SqlConnection 对象 using (SqlConnection connection = new SqlConnection(connectionString)) { try { // 打开连接 connection.Open(); Console.WriteLine("成功连接到数据库!"); // 执行一些数据库操作... } catch (Exception ex) { Console.WriteLine("连接数据库时发生错误:" + ex.Message); } } Console.ReadKey(); } } }
3、插入数据:向 “Students” 表中插入一条新记录,可以使用 SqlCommand 对象的 ExecuteNonQuery 方法来执行插入操作。
// ...(前面的代码保持不变) using (SqlConnection connection = new SqlConnection(connectionString)) { try { connection.Open(); Console.WriteLine("成功连接到数据库!"); // 创建 SqlCommand 对象,指定要执行的 SQL 插入语句 string insertSql = "INSERT INTO Students (StudentID, Name, Age, Grade) VALUES (@StudentID, @Name, @Age, @Grade)"; using (SqlCommand command = new SqlCommand(insertSql, connection)) { // 设置参数值 command.Parameters.AddWithValue("@StudentID", 1); command.Parameters.AddWithValue("@Name", "张三"); command.Parameters.AddWithValue("@Age", 20); command.Parameters.AddWithValue("@Grade", "大二"); // 执行插入操作 int rowsAffected = command.ExecuteNonQuery(); Console.WriteLine($"成功插入 {rowsAffected} 条记录。"); } } catch (Exception ex) { Console.WriteLine("操作数据库时发生错误:" + ex.Message); } }
4、查询数据:从 “Students” 表中查询所有学生的记录,并将结果输出到控制台,可以使用 SqlDataReader 对象来读取查询结果。
// ...(前面的代码保持不变) using (SqlConnection connection = new SqlConnection(connectionString)) { try { connection.Open(); Console.WriteLine("成功连接到数据库!"); // 创建 SqlCommand 对象,指定要执行的 SQL 查询语句 string selectSql = "SELECT * FROM Students"; using (SqlCommand command = new SqlCommand(selectSql, connection)) { // 执行查询操作,返回 SqlDataReader 对象 SqlDataReader reader = command.ExecuteReader(); // 遍历查询结果并输出到控制台 while (reader.Read()) { int studentId = reader.GetInt32(0); string name = reader.GetString(1); int age = reader.GetInt32(2); string grade = reader.GetString(3); Console.WriteLine($"学号: {studentId}, 姓名: {name}, 年龄: {age}, 年级: {grade}"); } // 关闭 SqlDataReader 对象 reader.Close(); } } catch (Exception ex) { Console.WriteLine("操作数据库时发生错误:" + ex.Message); } }
5、更新数据:更新 “Students” 表中某条记录的信息,将学号为 1 的学生的年龄更新为 21。
// ...(前面的代码保持不变) using (SqlConnection connection = new SqlConnection(connectionString)) { try { connection.Open(); Console.WriteLine("成功连接到数据库!"); // 创建 SqlCommand 对象,指定要执行的 SQL 更新语句 string updateSql = "UPDATE Students SET Age = @Age WHERE StudentID = @StudentID"; using (SqlCommand command = new SqlCommand(updateSql, connection)) { // 设置参数值 command.Parameters.AddWithValue("@StudentID", 1); command.Parameters.AddWithValue("@Age", 21); // 执行更新操作 int rowsAffected = command.ExecuteNonQuery(); Console.WriteLine($"成功更新 {rowsAffected} 条记录。"); } } catch (Exception ex) { Console.WriteLine("操作数据库时发生错误:" + ex.Message); } }
6、删除数据:删除 “Students” 表中某条记录,删除学号为 1 的学生。
// ...(前面的代码保持不变) using (SqlConnection connection = new SqlConnection(connectionString)) { try { connection.Open(); Console.WriteLine("成功连接到数据库!"); // 创建 SqlCommand 对象,指定要执行的 SQL 删除语句 string deleteSql = "DELETE FROM Students WHERE StudentID = @StudentID"; using (SqlCommand command = new SqlCommand(deleteSql, connection)) { // 设置参数值 command.Parameters.AddWithValue("@StudentID", 1); // 执行删除操作 int rowsAffected = command.ExecuteNonQuery(); Console.WriteLine($"成功删除 {rowsAffected} 条记录。"); } } catch (Exception ex) { Console.WriteLine("操作数据库时发生错误:" + ex.Message); } }
FAQs
1、问题:如何防止 SQL 注入攻击?
回答:在构建 SQL 查询时,应避免直接拼接用户输入的字符串,可以使用参数化查询,如上述代码中的command.Parameters.AddWithValue
方法,将用户输入作为参数传递给 SQL 语句,而不是直接拼接到查询字符串中,这样,即使用户输入了反面的 SQL 代码,也不会被执行,还可以对用户输入进行验证和过滤,确保其符合预期的格式和范围。
2、问题:如果连接数据库时出现 “找不到指定的服务器” 错误,可能是什么原因?如何解决?
回答:可能的原因包括服务器名称错误、服务器未启动、网络连接问题等,解决方法是检查服务器名称是否正确,确保服务器已启动并正在运行,检查网络连接是否正常,可以尝试使用 IP 地址代替服务器名称进行连接,或者在服务器上启用远程连接功能,并确保防火墙没有阻止连接请求。
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/126986.html