药品进销存管理系统Winform版(附SQLHelper类)

写在前面

这是大三数据库课程设计的成果。老师给的成绩是中。说实话,做的是不好,数据库设计的太简单了,而且还存在缺陷,只是简单地增删改查,稍微高级一点的SQL语句根本就不会写,现在看起来好LOW啊。但我还是决定把它发出来,记录我的编程之路。

距今差不多一年时间了,有些东西不怎么记得了。先放上截图和代码,以后补充。

课程设计题目要求

商业篇之药品进销存管理系统
涉及:员工信息、药品信息(分类)、生产厂家、药品库存、药品进货、药品零售、药品批发、客户信息等相关实体

运行截图

首先是登陆界面:

登陆成功后弹出药品过期提醒窗口:

主界面:

药品销售:

扫描二维码关注公众号,回复: 3625691 查看本文章

药品管理:

顾客管理:

进销存统计:

部分代码

先放上SQLHelper类的代码,主要是封装一些数据库操作,避免每次操作数据库时都要写连接字符串等一系列复杂的过程。

这部分是我跟着传智播客的视频自学ADO.Net数据库时一个字符一个字符敲下来的,C#也是跟着传智播客的视频学来的,还有Java、安卓.......在这里要感谢传智播客的老师们。

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace 药品进销存管理系统
{
    /// <summary>
    /// 这个静态类封装了4种数据库的相关操作方式
    /// 包括一般的查询、修改、多行多列查询、内存数据表等
    /// </summary>
    public static class SQLHelper
    {
        //从配置文件读取连接字符串
        private static readonly string conStr = ConfigurationManager.
            ConnectionStrings["药品进销存管理系统.Properties.Settings.YPGLConnectionString"].ConnectionString;

        /// <summary>
        /// 执行修改数据库的命令
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <param name="pms">SQL参数</param>
        /// <returns>受影响的行数</returns>
        public static int ExecuteNonQuery(string sql, params SqlParameter[] pms)
        {
            using (SqlConnection con = new SqlConnection(conStr))
            {
                using (SqlCommand cmd = new SqlCommand(sql, con))
                { //如果参数不为空,把参数添加至SQL命令
                    if (pms != null)
                    {
                        cmd.Parameters.AddRange(pms);
                    }
                    con.Open();
                    try
                    {
                        Console.WriteLine(cmd.CommandText);
                        return cmd.ExecuteNonQuery();
                    }
                    catch (Exception)
                    {

                        throw;
                    }
                }
            }
        }

        /// <summary>
        /// 执行数据库查询的命令
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <param name="pms">SQL参数</param>
        /// <returns>查询结果的第一行第一列</returns>
        public static object ExecuteScalar(string sql, params SqlParameter[] pms)
        {
            using (SqlConnection con = new SqlConnection(conStr))
            {
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    if (pms != null)
                    {
                        cmd.Parameters.AddRange(pms);
                    }
                    con.Open();
                    try
                    {
                        return cmd.ExecuteScalar();
                    }
                    catch (Exception)
                    {
                        
                        throw;
                    }
                    
                }
            }
        }

        /// <summary>
        /// 多行多列查询
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <param name="pms">SQL参数</param>
        /// <returns>只进只读的reader对象</returns>
        public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] pms)
        {
            SqlConnection con = new SqlConnection(conStr);
            using (SqlCommand cmd = new SqlCommand(sql, con))
            {
                if (pms != null)
                {
                    cmd.Parameters.AddRange(pms);
                }
                try
                {
                    con.Open();
                    /*
                     * SQLdatareader在读取的时候要保持连接是打开的,而如果return的话连接就会关闭
                     * reader就读不到数据
                     * 传入这个枚举参数,表示在使用完SQLdatareader后
                     * 在关闭reader的同时,在SQLdatareader内部会将关联的connection对象也关闭掉
                     */
                    return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                }
                catch (Exception)
                {//如果发生异常,把连接关闭并释放
                    con.Close();
                    con.Dispose();
                    throw;
                }
            }
        }

        /// <summary>
        /// 将数据库文件中的数据读取到一个内存数据表中
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <param name="pms">SQL参数</param>
        /// <returns>内存数据表对象</returns>
        public static DataTable ExecuteTable(string sql, params SqlParameter[] pms)
        {
            DataTable dt = new DataTable();
            try
            {
                using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conStr))
                {
                    if (pms != null)
                    {
                        adapter.SelectCommand.Parameters.AddRange(pms);
                    }
                    adapter.Fill(dt);
                }
                return dt;
            }
            catch (Exception)
            {

                throw;
            }

        }
    }
}

其他代码就不贴了,需要完整源码可以下载:

链接: 百度云 提取码: wv8i

猜你喜欢

转载自blog.csdn.net/qq_40582463/article/details/82918823
今日推荐