【Daily】数据库的封装(C#实现)


/* 程序问题注释开始

  • 程序的版权和版本声明部分

  • Copyright © 2020,湖南工程职业技术学院信息工程学院学生

  • 文件名称: 日常巩固

  • 作 者: 李 斌

  • 完成日期: 2020 年 05 月 23日

  • 对任务及求解方法的描述部分

  • 问题描述
      实现封装效果
      InitConnection       数据库连接
      GetDataReader       读取数据
      GetDataTable        获取数据表
      ExecuteNonQuery      执行增删改 (以增加用户为例)
      ExecuteScalar       执行聚合函数

  • 程序问题注释结束

*/


Program.cs+DBHelper.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //给数据库连接字符串赋值
            DBHelper.connString = "server=.;database=GameBoxDB;integrated security=true";
            //给sql命令字符串赋值
            DBHelper.sqlString = "select * from Products";

            //调用GetDataReader方法
            DBHelper.GetDataReader();
            //输出表头
            Console.WriteLine("序号\t游戏名称\t游戏价格\t库存数量\t小计");
            Console.WriteLine("===================================================================");
            //循环输入DataReader内容
            while (DBHelper.reader.Read())
            {
                //小计
                double subtotal = double.Parse(DBHelper.reader["Price"]. ToString()) * double.Parse(DBHelper.reader["Stock"].ToString());
                Console.WriteLine(DBHelper.reader["ID"] + "\t" + DBHelper.reader["Name"] + "\t"+string.Format("{0:C}",DBHelper.reader["Price"])+ "\t\t" + DBHelper.reader["Stock"] + "\t\t" + subtotal.ToString("C"));
            }
            //关闭reader对象
            DBHelper.reader.Close();

            //给sql命令字符串赋值
            DBHelper.sqlString = "select * from Products";
            //调用GetDatatable方法
            DBHelper.GetDataTable();

            //添加用户账号
            Console.WriteLine("请输入用户账号:");
            string loginId = Console.ReadLine();
            //添加用户密码
            Console.WriteLine("请输入用户密码:");
            string loginPwd = Console.ReadLine();
            //添加用户名称
            Console.WriteLine("请输入用户名称:");
            string name = Console.ReadLine();
            //给sql命令字符串赋值
            DBHelper.sqlString = string.Format("insert Admins values('{0}', '{1}', '{2}')", loginId, loginPwd, name);
            //调用ExecuteNonQuery方法
            string nonQuery = DBHelper.ExecuteNonQuery();
            //输出受影响的行数
            Console.WriteLine(nonQuery);

            //给sql命令字符串赋值
            DBHelper.sqlString = "select count(*) from Admins";
            //调用ExecuteScalar方法
            string scalar = DBHelper.ExecuteScalar().ToString();
            //输出首行首列的值
            Console.WriteLine(scalar);
        }
    }
}

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class DBHelper
    {
        //定义连接字符串
        public static string connString;
        //定义连接对象
        private static SqlConnection conn = null;
        //定义sql命令字符串
        public static string sqlString;
        //定义reader对象
        public static SqlDataReader reader;
        //定义DataTable对象
        public static DataTable dataTable;

        private static void InitConnection()
        {
            //连接对象不存在
            if (conn == null)
            {
                //创建数据库连接对象
                conn = new SqlConnection(connString);
            }
            //连接状态关闭
            if (conn.State == ConnectionState.Closed)
            {
                //打开数据库连接
                conn.Open();
            }
            //中断重新打开
            if (conn.State == ConnectionState.Broken)
            {
                //关闭数据库连接
                conn.Close();
                //打开数据库连接
                conn.Open();
            }
        }
        public static void GetDataReader()
        {
            //连接数据库
            InitConnection();
            //创建sql命令对象
            SqlCommand cmd = new SqlCommand(sqlString,conn);
            //返回并在关闭reader对象同时关闭数据库连接
            reader =cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
        public static void GetDataTable()
        {
            //连接数据库
            InitConnection();
            //创建DataTable对象
            dataTable = new DataTable();
            //创建DataAdapter对象
            SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlString,conn);
            //填充dataTable对象
            dataAdapter.Fill(dataTable);
            //关闭数据库连接
            conn.Close();
        }
        public static string ExecuteNonQuery()
        {
            //连接数据库
            InitConnection();
            //创建sql命令对象
            SqlCommand cmd = new SqlCommand(sqlString, conn);
            //返回是否执行成功
            if (cmd.ExecuteNonQuery() > 0)
            {
                return "执行成功!";
            }
            return "执行失败!";
        }
        public static Object ExecuteScalar()
        {
            //连接数据库
            InitConnection();
            //创建sql命令对象
            SqlCommand cmd = new SqlCommand(sqlString, conn);
            //返回执行sql命令值
            return cmd.ExecuteScalar();
        }
    }
}

你可能感兴趣的:(【Daily】数据库的封装(C#实现))