zoukankan      html  css  js  c++  java
  • ADO.NET – 3.书籍管理系统详解

    内容提要:

    1.先写应用程序配置文件app.config

    2.创建SQLHelper.cs

    3.加载Form的load事件

    4.搜索事件

    5.点击书籍列表显示具体数据

        5.1先修改为全行选中

        5.2事件dgv_Books_CellClick(object sender, DataGridViewCellEventArgs e)

            :选中一行,下面显示具体数据

    6.新增

    7.修改

    8.删除

    9.退出

    效果图:

    image

     

    1.先写应用程序配置文件app.config

    app.config
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <connectionStrings>
        <add name="conStr" connectionString="Server=.\SQLEXPRESS;database=tangsansan;uid=sa;pwd=sa" />
      </connectionStrings>
    </configuration>

     

    2.创建SQLHelper.cs

    SQlHepler.cs
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Configuration;
     6 using System.Data;
     7 using System.Data.SqlClient;
     8 
     9 
    10 namespace BMS
    11 {
    12     public static class SQLHelper
    13     {
    14         private static string conStr = ConfigurationManager.
    15             ConnectionStrings["conStr"].ConnectionString;
    16 
    17         private static SqlConnection conn;
    18 
    19         //连接通道 属性
    20         #region 连接通道 属性
    21         public static SqlConnection Conn
    22         {
    23             get
    24             {
    25                 if (conn == null || conn.State == ConnectionState.Broken)
    26                 {
    27                     conn = new SqlConnection(conStr);
    28                 }
    29                 return conn;
    30             }
    31         }
    32         #endregion
    33         /// <summary>
    34         /// 获取数据表
    35         /// </summary>
    36         /// <param name="sqlStr">查询语句</param>
    37         /// <param name="paras">参数数组</param>
    38         /// <returns>结果表</returns>
    39         public static DataTable GetDataTable(string sqlStr, params SqlParameter[] paras)
    40         {
    41             SqlCommand cmd = new SqlCommand(sqlStr, Conn);
    42             if (paras.Length > 0)
    43             {
    44                 cmd.Parameters.AddRange(paras);
    45             }
    46             SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    47             DataTable dt = new DataTable();
    48             try
    49             {
    50                 adapter.Fill(dt);
    51             }
    52             catch (Exception ex)
    53             {
    54 
    55                 throw ex;
    56             }
    57             return dt;
    58         }
    59         /// <summary>
    60         /// 执行SQL
    61         /// </summary>
    62         /// <param name="sql"></param>
    63         /// <param name="parameters"></param>
    64         /// <returns></returns>
    65         public static int ExecNonQuery(string sql, SqlParameter[] parameters)
    66         {
    67 
    68             using (SqlCommand cmd = new SqlCommand(sql, conn))
    69             {
    70                 if (parameters.Length > 0 && parameters != null)
    71                 {
    72                     cmd.Parameters.AddRange(parameters);
    73                 }
    74                 conn.Open();
    75                 int res = 0;
    76                 try
    77                 {
    78                     res = cmd.ExecuteNonQuery();
    79                 }
    80                 catch (Exception e)
    81                 {
    82                     throw e;
    83                 }
    84                 finally
    85                 {
    86                     conn.Close();
    87                 }
    88                 return res;
    89             }          
    90         }
    91     }
    92 }

     

    3.加载Form的load事件

    显示行号 复制代码 Form_load事件
    1.         //窗体加载事件
      
    2.         private void Form1_Load(object sender, EventArgs e)
      
    3.       {
      
    4.           LoadBooks();
      
    5.           LoadCategory();
      
    6.       }
      
    7. 
      

            /// <summary>
            /// 加载dgv_Books:(dategridview列表)
            /// </summary>
            private void LoadBooks()
            {
                string sqlStr = "select b_Id,c_name,b_title,b_content,b_author,b_isdel,b_addtime,b_money,b_submoney " +
                                "from Book inner join Category on b_Cid = c_id where b_isdel = 0";
                DataTable dt = SQLHelper.GetDataTable(sqlStr);
                dgv_Books.DataSource = dt;
            }
     
            /// <summary>
            /// 加载cb_Cate:(书籍类别)
            /// </summary>
            private void LoadCategory()
            {
                string sqlStr = "select * from Category where c_isdel=0";
                DataTable dt = SQLHelper.GetDataTable(sqlStr);
                foreach (DataRow dr in dt.Rows)
                {
                    Category model = new Category();
                    if (dr["c_id"] != null)
                    {
                        model.Cid = Convert.ToInt32(dr["c_id"]);
                    }
                    model.CName = dr["c_Name"].ToString();
                    model.CRemark = dr["c_remark"].ToString();
                    model.CIsdel = bool.Parse(dr["c_isdel"].ToString());
                    model.CAddtime = Convert.ToDateTime(dr["c_addtime"].ToString());
                    model.CParentId = int.Parse(dr["c_parentId"].ToString());
                    cb_Cate.Items.Add(model);
                }
                cb_Cate.DisplayMember = "CName";
                cb_Cate.ValueMember = "Cid";
                cb_Cate.SelectedIndex = 0;
            }
     

     

    4.搜索事件

    image

            private void btn_Serch_Click(object sender, EventArgs e)
            {
                //获得关键字文本框的文本内容
                string txtkey = this.txt_key.Text.Trim();
     
                //获取下拉框选中项,转成Category,获取类别ID
                int cate = ((Category)cb_Cate.SelectedItem).Cid;
     
                string sqlStr = "select b_Id,c_name,b_title,b_content,b_author,b_isdel,b_addtime,b_money,b_submoney " +
                                "from Book inner join Category on b_Cid = c_id where b_cid=@cid";
                //如果关键字不为空
                if (!string.IsNullOrEmpty(txtkey))
                {
                    sqlStr += string.Format(" and b_title like '%{0}%'", txtkey);
                }
     
                //得到@cid的值
                SqlParameter sq =new SqlParameter("@cid",SqlDbType.Int,4);
                sq.Value = cate;
     
                //绑定dgv
                DataTable dt = SQLHelper.GetDataTable(sqlStr,sq);
                dgv_Books.DataSource = dt;
            }
     

     

    5.点击书籍列表显示具体数据

     

        5.1先修改为全行选中

    image

        5.2事件dgv_Books_CellClick(object sender, DataGridViewCellEventArgs e)

    :选中一行,下面显示具体数据

    image

             //书籍列表的单元格点击事件
             private void dgv_Books_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                int rowindex = e.RowIndex;
                //ID
                string bid = dgv_Books.Rows[rowindex].Cells[0].Value.ToString();
                lab_ID.Text = bid;
                //书名:txt_title
                string title = dgv_Books.Rows[rowindex].Cells[2].Value.ToString();
                txt_title.Text = title;
                //内容:txt_Content
                string content = dgv_Books.Rows[rowindex].Cells[3].Value.ToString();
                txt_Content.Text = content;
                //作者:txt_author
                string author = dgv_Books.Rows[rowindex].Cells[4].Value.ToString();
                txt_author.Text = author;
                //SelectedItem选择的是Item添加cb_Cate.Items.Add的值
                  //如果绑定的datasource,SelectedValue选择的是cb_bookcate.ValueMember的值
                  //Cells[9]是c_id的值,一般选择隐藏
                  cb_bookcate.SelectedValue = dgv_Books.Rows[rowindex].Cells[9].Value.ToString();
            }
     

    效果图:

    image

     

    6.新增

            #region 新增
            private void btn_Add_Click(object sender, EventArgs e)
            {
                string title = this.txt_title.Text.Trim();
                string author = this.txt_author.Text.Trim();
                string bCid = this.cb_bookcate.SelectedValue.ToString();
                string content = txt_Content.Text.Trim();
     
                StringBuilder strSql = new StringBuilder();
                strSql.Append("insert into book(");
                strSql.Append("b_Cid,b_title,b_content,b_author)");
                strSql.Append(" values (");
                strSql.Append("@b_Cid,@b_title,@b_content,@b_author)");
                strSql.Append(";select @@IDENTITY");
                SqlParameter[] parameters =
                    {
                        new SqlParameter("@b_Cid", SqlDbType.Int, 4),
                        new SqlParameter("@b_title", SqlDbType.VarChar, 200),
                        new SqlParameter("@b_content", SqlDbType.VarChar, 200),
                        new SqlParameter("@b_author", SqlDbType.VarChar, 200)
                    };
                parameters[0].Value = bCid;
                parameters[1].Value = title;
                parameters[2].Value = content;
                parameters[3].Value = author;
                int res = SQLHelper.ExecNonQuery(strSql.ToString(), parameters);
                //执行成功则刷新列表
                if (res > 0)
                {
                    LoadBooks();
                    MessageBox.Show("新增成功!");
                }
                else
                {
                    MessageBox.Show("新增失败!");
                }
            } 
            #endregion
    
    

     

    7.修改

     
            #region 修改
     
            private void btn_Update_Click(object sender, EventArgs e)
            {
                string bId = this.lab_ID.Text;
                string title = this.txt_title.Text.Trim();
                string author = this.txt_author.Text.Trim();
                string bCid = this.cb_bookcate.SelectedValue.ToString();
                string content = txt_Content.Text.Trim();
     
                string sqlStr = string.Format("update book set b_title=@title," +
                                              "b_content=@content,b_author=@author,b_cid=@cid" +
                                              " where b_id=@bid");
                SqlParameter[] parameters =
                    {
                        new SqlParameter("@title", SqlDbType.VarChar, 200),
                        new SqlParameter("@content", SqlDbType.VarChar, 200),
                        new SqlParameter("@author", SqlDbType.VarChar, 200),
                        new SqlParameter("@cid", SqlDbType.Int, 4),
                        new SqlParameter("@bid", SqlDbType.Int, 4),
                    };
                //为参数数组中的每个参数赋值
                parameters[0].Value = title;
                parameters[1].Value = content;
                parameters[2].Value = author;
                parameters[3].Value = bCid;
                parameters[4].Value = bId;
                int res = SQLHelper.ExecNonQuery(sqlStr, parameters);
                //执行成功则刷新列表
                if (res>0)
                {
                    LoadBooks();
                    MessageBox.Show("修改成功!");
                }
                else
                {
                    MessageBox.Show("修改不成功!");
                }
            }
            #endregion
    
    

     

    8.删除

    private void btn_Del_Click(object sender, EventArgs e)
     {
         string bId = this.lab_ID.Text;
         StringBuilder strSql = new StringBuilder();
         strSql.Append("delete from book ");
         strSql.Append(" where b_id=@cid");
         SqlParameter[] parameters = {
                 new SqlParameter("@cid", SqlDbType.Int,4)
         };
         parameters[0].Value = bId;
         int res = SQLHelper.ExecNonQuery(strSql.ToString(), parameters);
         //执行成功则刷新列表
         if (res > 0)
         {
             LoadBooks();
             MessageBox.Show("删除成功!");
         }
         else
         {
             MessageBox.Show("删除失败!");
         }
     }
     

     

    9.退出

    //退出
    private void btn_Out_Click(object sender, EventArgs e)
    {
        //this.Close();
        //只是关闭了当前窗口,若不是主窗体的话,是无法退出整个程序的,
        //另外若有托管线程(非主线程)如指针之类的,也无法干净地退出。
     
    
    
        //Application.Exit();
        //强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出。
     
    
    
        //Application.ExitThread();
        //强制中止调用线程上的所有消息,无法控制多线程正确退出的问题;
     
    
    
        //System.Environment.Exit(0);
        //这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。
     
    
    
        System.Environment.Exit(System.Environment.ExitCode);
        //所以在程序中需要强制退出的地方加上System.Environment.Exit(System.Environment.ExitCode);  
        //还有一种方法:  System.Threading.Thread.CurrentThread.Abort(); 
        //或者  Process.GetCurrentProcess().Kill() 
        //或者  Application.ExitThread(); 
        //或者  Application.ExitThread()
    }
     
  • 相关阅读:
    Visual Studio 2010使用Visual Assist X的方法
    SQL Server 2000 评估版 升级到 SQL Server 2000 零售版
    双网卡多网络单主机同时访问
    开发即过程!立此纪念一个IT新名词的诞生
    delphi dxBarManager1 目录遍历 转为RzCheckTree2树
    5320 软件集合
    delphi tree 从一个表复制到另一个表
    DELPHI 排课系统课表
    长沙金思维 出现在GOOGLE的 金思维 相关搜索里啦!!
    如何在DBGrid的每一行前加一个单选框?
  • 原文地址:https://www.cnblogs.com/tangge/p/2739068.html
Copyright © 2011-2022 走看看