一、利用C#对数据库进行增删查改
在C#中,对数据库进行增删查改操作(通常称为CRUD操作:创建、读取、更新和删除),可以通过多种方式实现,但最通用的是使用ADO.NET。
1.1 创建(增,Insert)
直接看程序讲解:
假设我们有一个名为 Students
的数据库表,它有两列:Name
和 Age
。我们想要将一个新学生的信息插入这个表中。假设新学生的名字是 “Alice”,年龄是 20。以下是具体的代码示例:
string connectionString = " "Server=DESKTOP-1JMUPMG\\MSSQLSERVER1;DataBase=StudentManageDB;Uid=sa;Pwd=151423qwe,+"";
string insertQuery = "INSERT INTO Students (Name, Age) VALUES (@name, @age)";
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(insertQuery, conn);
// 添加参数并赋值
command.Parameters.AddWithValue("@name", "Alice");
command.Parameters.AddWithValue("@age", 20);
// 打开连接并执行插入命令
conn.Open();
int result = command.ExecuteNonQuery();
// result 为受影响的行数
if (result > 0)
{
Console.WriteLine("Insert successful.");
}
else
{
Console.WriteLine("Insert failed.");
}
}
在这段代码中:
-
connectionString
应包含连接到数据库所需的所有信息。它通常包括服务器的地址、数据库的名称、以及用于连接数据库的凭据(用户名和密码)。
这里有疑问的话,看这篇:C#访问数据库 -
insertQuery
是要执行的SQL插入语句。 -
使用
using
语句来确保SqlConnection
对象在使用完毕后会被正确地关闭和释放。 -
在
SqlCommand
对象上,使用Parameters.AddWithValue
方法来添加两个参数:@name
和@age
,它们分别被设置为字符串 “Alice” 和整数 20。 -
然后,打开数据库连接,执行命令,并检查返回的
result
。如果result
大于 0,表示有行受到了影响,即数据插入成功。如果没有,则表示插入失败。
使用另一种方式再写一个例子,假设这个表有很多列,代表了成员信息,也可这样增加
string sql = "insert into Students(StudentName,Gender,Birthday,StudentIdNo,Age,PhoneNumber,StudentAddress,ClassId)";
sql += "values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')";
sql = string.Format(sql, "路飞", "男", "2012-01-01", 410621201201010908, 25, "13666668888", "辽宁", 1);
只不过这样写虽然更直接,但是有几个问题:
//
SQL注入风险:最严重的问题是这种方式可能会导致SQL注入攻击。如果变量值是从不可信的用户输入中获取的,攻击者可以在输入中注入恶意SQL代码,这可能导致数据泄露、数据损坏或其他安全问题。使用参数化查询(如使用@parameter
)可以有效防止SQL注入。
. 类型转换问题:在字符串中直接插入变量值可能会导致类型转换错误。例如,日期和数字可能需要特定的格式才能正确插入到数据库中。参数化查询会处理数据类型转换,减少出错的可能性。
. 代码可读性和维护性:尽管直接插入变量值看起来在某些