C#操作SqlServer数据库语句

时间:2024-10-16 19:56:01

 操作数据库语句

操作数据库语句需要搭配数据库的连接Connection类 和下达SQL命令Command类

1. ExecuteNonQuery

ExecuteNonQuery 方法主要用来更新数据。通常使用它来执行Update、Insert和Delete语句,最后执行sql语句的时候可以用一个整形变量来接收,返回值是执行的行数 例如: int num = cmd.ExecuteNonQuery();

操作ExecuteNonQuery
第一步: 连接数据库
public string connString = @"Server=192.168.113.65,51187\SQLEXPRESS;DataBase=StudentManageDB;Uid=sa;Pwd=123456";

public SqlConnection conn = new SqlConnection(connString);
conn.Open();

第二步(创建SQL语句) :
string sql = "delete from Students where ClassId=99";

第三步(创建一个sql命令 Command) :
// 参数1: sql语句  参数2: 连接数据库对象
SqlCommand cmd = new SqlCommand(sql, conn);

第四步(执行sql语句)
cmd.ExecuteNonQuery();

2. ExecuteScalar

在C#中,ExecuteScalar方法用于执行查询并返回查询结果的第一行第一列的值。它通常用于执行返回单个值的SQL查询,例如COUNT、SUM等聚合函数的查询。 ExecuteScalar方法返回一个object类型的结果,因此在使用之前需要进行类型转换。

操作ExecuteScalar
// 1 创建数据库链接
SqlConnection conn = new SqlConnection(connstring);

// 2 创建sql命令
SqlCommand cmd = new SqlCommand(sql, conn);

// 3打开链接执行命令
conn.Open();
int a = Convert.ToInt32(cmd.ExecuteScalar());

3. ExecuteReader

C#中的ExecuteReader方法用于执行SQL查询,并返回查询结果的数据读取器。

它通常用于从数据库中检索数据。 ExecuteReader方法返回一个SqlDataReader对象,该对象可以用于逐行读取查询结果。可以使用DataReader的方法来获取每行的列值,并进一步处理它们。

ExecuteReader方法常用于执行SELECT语句,以便从数据库中读取数据。它还可以与参数化查询一起使用,以允许动态输入查询条件。

操作ExecuteReader
    private void button4_Click(object sender, EventArgs e)
    {
      连接数据库
      public string connString = @"Server=192.168.113.65,51187\SQLEXPRESS;DataBase=StudentManageDB;Uid=sa;Pwd=123456";

      public SqlConnection conn = new SqlConnection(connString);
      conn.Open();

        List<Student> list = new List<Student>() ; // 创建列表存储类
        string sql = "select * from Students";  // sql语句
        SqlCommand cmd = new SqlCommand(sql,conn) ; // sql命令
        // 读取

        // System.Data.CommandBehavior.CloseConnection 数据读取完之后关闭链接
        SqlDataReader r = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); 
        // 由于ExecuteReader方法一次只能读取一行,所以在此处使用for循环直到读取完停止

        while (r.Read())
        {
            list.Add(new Student()
            {
                StudentId = Convert.ToInt32(r["StudentId"]),
                StudentName = r["StudentName"].ToString(),
                BirthDay = r["BirthDay"].ToString(),
                Age = Convert.ToInt32(r["Age"]),

            });
            
        }
        dataGridView1.DataSource = list; // 将读取出来的内容显示在表格

    }
// 创建数据类接收读取出来的内容

public class Student
{
    public int StudentId { get; set; }
    public string StudentName { get; set; }
    public string BirthDay { get; set; }
    public int Age { get; set; }
} 

4. SqlDataAdapter

SqlDataAdapter是 DataSet和 SQL Server之间的桥接器,用于检索和保存数据。SqlDataAdapter通过对数据源使用适当的Transact-SQL语句映射 Fill(它可更改DataSet中的数据以匹配数据源中的数据)和 Update(它可更改数据源中的数据以匹配 DataSet中的数据)来提供这一桥接。当SqlDataAdapter填充 DataSet时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。

操作SqlDataAdapter
string sql = "select * from Students";  // sql语句
SqlCommand cmd = new SqlCommand(sql,conn) ; // sql命令

DataSet ds = new DataSet(); // 创建一个dataset变量
SqlDataAdapter adapter = new SqlDataAdapter(cmd); // 执行cmd命令 返回的是查询语句的数据集合
adapter.Fill(ds); // 使用adater填充数据集
this.dataGridView1.DataSource = ds.Tables[0]; // 从数据库ds去除数据赋值给表格的datasource