ADO.NET 七(一个例子)

Posted lu-yuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ADO.NET 七(一个例子)相关的知识,希望对你有一定的参考价值。

  通过一个完整的实例实现课程信息管理功能的操作,包括查询、修改、删除课程信息等操作。

1) 创建课程信息表

create table StuCourse
(
    id int primary key identity(1,1),
    name varchar(20),
    credit numeric(3,1),
    remark varchar(50)
);

  INSERT INTO StuCourse (name,credit,remark) VALUES (‘English‘,3.00,‘Good Good Study‘);
  INSERT INTO StuCourse (name,credit,remark) VALUES (‘Math‘,2.56,‘Good Good Study, Day‘);
  INSERT INTO StuCourse (name,credit,remark) VALUES (‘Chinese‘,4.04,‘Good Good Study, Day Day‘);
  INSERT INTO StuCourse (name,credit,remark) VALUES (‘English1‘,3.00,‘Good Good Study‘);
  INSERT INTO StuCourse (name,credit,remark) VALUES (‘Math1‘,2.56,‘Good Good Study, Day‘);
  INSERT INTO StuCourse (name,credit,remark) VALUES (‘Chinese1‘,4.04,‘Good Good Study, Day Day‘);

2) 课程信息管理界面的设计

  DataGridView 控件用于显示课程信息,并提供了根据课程名称查找课程信息、修改以及删除的功能,另外提供增加课程功能(暂无)。

  技术图片

   技术图片

 

3) 具体代码(不细分了)

  实体类:

  /// <summary>
  /// 课程实体类(实际应创建一实体类的项目,里面可能有多个实体类
  /// </summary>
  public class Entities
  
    /// <summary>
    /// 编号(数据库中的自增主键)
    /// </summary>
    public int ID get; set;
    /// <summary>
    /// 课程名称
    /// </summary>
    public string Name get; set;
    /// <summary>
    /// 课程学分
    /// </summary>
    public float Credit get; set;
    /// <summary>
    /// 备注
    /// </summary>
    public string Remark get; set;
  

 

  业务层数据层:

  /// <summary>
  /// 课程相关处理类(实际应将业务逻辑层BLL与数据库层DAL分开,各自创建一个项目
  /// </summary>
  public class CourseInfo
  
    static string conString = "Data Source=.;Initial Catalog=TestDB;Integrated Security=True;";

    /// <summary>
    /// 返回所有课程信息
    /// </summary>
    /// <returns> List<Entities></returns>
    public static List<Entities> GetAllCourseInfo()
    
      SqlDataReader reader = null;
      try
      
        List<Entities> entities = new List<Entities>();
        string sqlStr = "SELECT * FROM StuCourse";
        using (SqlConnection con = new SqlConnection(conString))
        
          con.Open();
          SqlCommand cmd = new SqlCommand(sqlStr, con);
          reader = cmd.ExecuteReader();
          while (reader.Read())
          
            int id = reader["id"] == DBNull.Value ? -1 : Convert.ToInt32(reader["id"]);
            string name = reader["name"] == DBNull.Value ? "" : reader["name"].ToString();
            float credit = reader["credit"] == DBNull.Value ? 0f : Convert.ToSingle(reader["credit"]);
            string remark = reader["remark"] == DBNull.Value ? "" : reader["remark"].ToString();

            Entities entity = new Entities()
            
              ID = id,
              Name = name,
              Credit = credit,
              Remark = remark
            ;
            entities.Add(entity);
          
        
        return entities;
      
      catch (Exception)
      
        //打印log
        throw;
      
      finally
      
        if (reader != null)
        
          reader.Close();
        
      
    

/// <summary>
/// 返回查找的课程信息,模糊查询
/// </summary>
/// <param name="courseName"></param>
/// <returns>List<Entities></returns>
public static List<Entities> GetTheCourseInfo(string courseName)

  SqlDataReader reader = null;
  try
  
    string sqlStr = "";
    List <Entities> entities = new List<Entities>();
    if (courseName == "All Course")
      sqlStr = $"SELECT * FROM StuCourse";
    else
      sqlStr = $"SELECT * FROM StuCourse WHERE name like ‘%courseName%‘";
    using (SqlConnection con = new SqlConnection(conString))
    
      con.Open();
      SqlCommand cmd = new SqlCommand(sqlStr, con);
      reader = cmd.ExecuteReader();
      while (reader.Read())
      
        int id = reader["id"] == DBNull.Value ? -1 : Convert.ToInt32(reader["id"]);
        string name = reader["name"] == DBNull.Value ? "" : reader["name"].ToString();
        float credit = reader["credit"] == DBNull.Value ? 0f : Convert.ToSingle(reader["credit"]);
        string remark = reader["remark"] == DBNull.Value ? "" : reader["remark"].ToString();

        Entities entity = new Entities()
        
          ID = id,
          Name = name,
          Credit = credit,
          Remark = remark
        ;
        entities.Add(entity);
      
    
    return entities;
  
  catch (Exception)
  
    //打印log
    throw;
  
  finally
  
    if (reader != null)
    
      reader.Close();
    
  


/// <summary>
/// 删除
/// </summary>
/// <param name="courseID"></param>
/// <returns>int</returns>
public static int DeleteTheCourseInfo(int courseID)

  try
  
    int res = -1;
    List<Entities> entities = new List<Entities>();
    string sqlStr = $"DELETE FROM StuCourse WHERE id = courseID";
    using (SqlConnection con = new SqlConnection(conString))
    
      con.Open();
      SqlCommand cmd = new SqlCommand(sqlStr, con);
      res = cmd.ExecuteNonQuery();
    

        return res;
        
      catch (Exception)
      
        //打印log
        throw;
      
    

/// <summary>
/// 更新
/// </summary>
/// <param name="entity"></param>
/// <returns>int</returns>
public static int UpdateTheCourseInfo(Entities entity)

  try
  
    int res = -1;
    string sqlStr = $@"UPDATE StuCourse SET name = N‘entity.Name‘,
    credit = entity.Credit, remark = N‘entity.Remark‘ WHERE id = entity.ID";
    using (SqlConnection con = new SqlConnection(conString))
    
      con.Open();
      SqlCommand cmd = new SqlCommand(sqlStr, con);
      res = cmd.ExecuteNonQuery();
    

        return res;
      
      catch (Exception)
      
        //打印log
        throw;
      
    

/// <summary>
/// 增加
/// </summary>
/// <param name="entity"></param>
/// <returns>int</returns>
public static int AddTheCourseInfo(Entities entity)

  try
  
    int res = -1;
    string sqlStr = $@"INSERT INTO StuCourse (name,credit,remark) VALUES
    (‘entity.Name‘, entity.Credit, ‘entity.Remark‘)";
    using (SqlConnection con = new SqlConnection(conString))
    
      con.Open();
      SqlCommand cmd = new SqlCommand(sqlStr, con);
      res = cmd.ExecuteNonQuery();
    

        return res;
      
      catch (Exception)
      
        //打印log
        throw;
      
    

  

 

  界面代码:

public partial class Form1 : Form

  public Form1()
  
    InitializeComponent();
  

private void Form1_Load(object sender, EventArgs e)

  Init();

private void Init()

  List<Entities> allCourseInfo = CourseInfo.GetAllCourseInfo();
  dgvCourseInfo.DataSource = allCourseInfo;
  cbCourseName.Items.Add("All Course");
  for (int i = 0; i < allCourseInfo.Count; i++)
  
    cbCourseName.Items.Add(allCourseInfo[i].Name);
  
  if (cbCourseName.Items.Count > 0)
  
    cbCourseName.SelectedIndex = 0;
  
  //dgvCourseInfo.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

      //dgvCourseInfo.Columns[0].HeaderText = "id";
      //dgvCourseInfo.Columns[1].HeaderText = "名称";
    

//private void cbCourseName_SelectedIndexChanged(object sender, EventArgs e)
//
  // if (!string.IsNullOrWhiteSpace(cbCourseName.SelectedItem.ToString()))
  //
    // btnSearch_Click(sender, e);
  //
//

 

//查询
private void btnSearch_Click(object sender, EventArgs e)

  List<Entities> theCourseInfo = CourseInfo.GetTheCourseInfo(cbCourseName.SelectedItem.ToString().Trim());
  if (theCourseInfo.Count > 0)
  
    dgvCourseInfo.DataSource = null;
    dgvCourseInfo.DataSource = theCourseInfo;
    MessageBox.Show(theCourseInfo.Count.ToString() + "条数据", "Tips", MessageBoxButtons.OK,               MessageBoxIcon.Information);
  
  else
  
    dgvCourseInfo.DataSource = null;
    MessageBox.Show("No Data","Tips", MessageBoxButtons.OK,MessageBoxIcon.Information);
  

 

//删除
private void btnDelete_Click(object sender, EventArgs e)

  if (dgvCourseInfo.DataSource == null)
  
    MessageBox.Show("Search first", "Tips", MessageBoxButtons.OK, MessageBoxIcon.Information);
    return;
  
  dgvCourseInfo.MultiSelect = false;
  DataGridViewSelectedRowCollection src = dgvCourseInfo.SelectedRows;
  if (src.Count == 0)
  
    MessageBox.Show("Choose first", "Tips", MessageBoxButtons.OK, MessageBoxIcon.Information);
    return;
  
  int id = Convert.ToInt32(src[0].Cells[0].Value);
  int res = CourseInfo.DeleteTheCourseInfo(id);

      if (res > 0)
      
        List<Entities> allCourseInfo = CourseInfo.GetAllCourseInfo();
        dgvCourseInfo.DataSource = allCourseInfo;
      
      else
      
        MessageBox.Show("Delete failed", "Tips", MessageBoxButtons.OK, MessageBoxIcon.Information);
        return;
      
    

 

//更新
private void btnUpdate_Click(object sender, EventArgs e)

  if (dgvCourseInfo.DataSource == null)
  
    MessageBox.Show("Search first", "Tips", MessageBoxButtons.OK, MessageBoxIcon.Information);
    return;
  
  dgvCourseInfo.MultiSelect = false;
  DataGridViewSelectedRowCollection src = dgvCourseInfo.SelectedRows;
  if (src.Count == 0)
  
    MessageBox.Show("Choose first", "Tips", MessageBoxButtons.OK, MessageBoxIcon.Information);
    return;
  
  int id = Convert.ToInt32(src[0].Cells[0].Value);
  string name = src[0].Cells[1].Value.ToString();
  float credit = Convert.ToSingle(src[0].Cells[2].Value);
  string remark = src[0].Cells[3].Value.ToString();
  int res = CourseInfo.UpdateTheCourseInfo(new Entities()
    ID=id,
    Name=name,
    Credit=credit,
    Remark=remark
  );

      if (res > 0)
      
        List<Entities> allCourseInfo = CourseInfo.GetAllCourseInfo();
        dgvCourseInfo.DataSource = allCourseInfo;
      
      else
      
        MessageBox.Show("Update failed", "Tips", MessageBoxButtons.OK, MessageBoxIcon.Information);
        return;
      
    

  

 

  不合理的地方有待改进。

  参考:http://c.biancheng.net/view/3040.html

以上是关于ADO.NET 七(一个例子)的主要内容,如果未能解决你的问题,请参考以下文章

ADO.NET_01

ADO。NET 紧急!!!!高手请进。

ASP.NET ADO.NET 和C#编程语言他们之间的关系是怎样的?

Ado.net

ADO.NET和.NET的关系?

ADO.NET