c#操作数据库三层架构

1#数据库操作类 SqlHelper.cs

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;

namespace stu
{
    class SqlHelper
    {
        private static string DbConfig = "Server=localhost;database=data_student;Trusted_Connection=True;";

        /// <summary>
        /// 对数据库进行 添加,修改,删除操作
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static int EditSql(string sql)
        {
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = DbConfig;
            conn.Open();

            SqlCommand command = new SqlCommand(sql,conn);

            int count = 0;
            try
            {
                count = command.ExecuteNonQuery();
            }
            catch (Exception) 
            {

                count = -1;
                Console.WriteLine("数据库写入失败!");
            }

            command.Dispose();
            conn.Close();

            return count;

        }
        /// <summary>
        /// 查询数据库,返回DataTable
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static DataTable LookUp(string sql)
        {
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = DbConfig;
            conn.Open();

            SqlCommand command = new SqlCommand(sql, conn);

            SqlDataAdapter apter = new SqlDataAdapter();
            apter.SelectCommand = command;

            DataSet ds = new DataSet();
            apter.Fill(ds);

            DataTable table = ds.Tables[0];
            conn.Close();
            return table;


        }


    }
}

2# 实体类 UserModel.cs

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace stu
{
    public class UserModel
    {
        public string UserName { get; set; }
        public string PassWord { get; set; }
        public string NickName { get; set; }
        public string Gender { get; set; }

        public override string ToString()
        {
            return string.Format("UserName:{0}  PassWord:{1}  NickName:{2}  Gender:{3}",UserName,PassWord,NickName,Gender);
        }
    }

   
}

3# 数据交换层 UserControl.cs

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
namespace stu
{
   public class UserControl
    {
        public static UserModel DataRowToUserModel(DataRow currentRow)
        {
            UserModel user = new UserModel();
            user.UserName = currentRow["UserName"].ToString().Trim();
            user.PassWord = currentRow["PassWord"].ToString().Trim();
            user.NickName = currentRow["NickName"].ToString().Trim();
            user.Gender = currentRow["Gender"].ToString().Trim();
            return user;
        }
        /// <summary>
        /// 登录,如果返回null 说明不存在
        /// </summary>
        /// <param name="username"></param>
        /// <param name="pwd"></param>
        /// <returns></returns>
        public static UserModel Login(string username,string pwd)
        {
            string sql = $"select * from TableUser where UserName='{username}' and PassWord='{pwd}'; ";

            DataTable table= SqlHelper.LookUp(sql);
           
            if (table.Rows.Count<=0) // 这里要用小于等于0
            {
                return null;
            }

            UserModel user = DataRowToUserModel(table.Rows[0]);
            return user;

        }
        /// <summary>
        /// 返回所有数据 
        /// </summary>
        /// <returns></returns>
        public static List<UserModel> ShowAllUsers()
        {
            List<UserModel> list = new List<stu.UserModel>();

            string sql = $"select * from TableUser";

            DataTable table= SqlHelper.LookUp(sql);
            if (table.Rows.Count<=0)
            {
                return null;
            }

            for (int i = 0; i < table.Rows.Count; i++)
            {
                UserModel model = DataRowToUserModel(table.Rows[i]);
                list.Add(model);

            }

            return list;
        }

        /// <summary>
        /// 修改用户信息
        /// </summary>
        /// <param name="user"></param>
        public static bool EditUserInfo(UserModel user)
        {
            string sql = $"update TableUser SET password='{user.PassWord}',nickname='{user.NickName}',gender='{user.Gender}'where username='{user.UserName}'; ";

            int count = SqlHelper.EditSql(sql);
            if (count>=0)
            {
                return true;
            }else
            {
                return false;
            }

        }
    }
}

界面层

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;

namespace stu
{
    class Program
    {
        static void Main(string[] args)
        {

            while (true)
            {

         
            Console.WriteLine("欢迎进入登录系统....");
            Console.Write("输入用户名:");
            string name = Console.ReadLine();
            Console.Write("输入用户密码:");
            string pwd = Console.ReadLine();

            UserModel user = UserControl.Login(name, pwd);
            if (user==null)
            {
                Console.WriteLine("不存在");
                    continue;
            }else
            {
                Console.WriteLine("登录成功");
                    break;
            }
            
            }

            List<UserModel> users = UserControl.ShowAllUsers();

            foreach (UserModel item in users)
            {
                Console.WriteLine(item);
            }


            // 修改数据
            Console.WriteLine("------------------------------------------------------------------------"  );

            UserModel u = new UserModel() { UserName = "李阿猫", PassWord = "123456", NickName = "guoguo"};
            bool flag = UserControl.EditUserInfo(u);
            if (flag)
            {
                Console.WriteLine("修改成功");
            }


            Console.ReadKey();
        }
    }
}
相关推荐
全栈测试笔记1 天前
异步函数与异步生成器
linux·服务器·前端·数据库·python
Lee_SmallNorth1 天前
变态需求之【角色不同访问数据库的用户不同】
java·开发语言·数据库
李慕婉学姐1 天前
Springboot连锁火锅管理及预测系统sh5s1gn1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
dishugj1 天前
【oracle】19c集群巡检问题
数据库·oracle
知识分享小能手1 天前
Oracle 19c入门学习教程,从入门到精通,Oracle 其他数据对象 —— 语法详解与综合实践(11)
数据库·学习·oracle
木风小助理1 天前
JavaStreamAPI的性能审视,优雅语法背后的隐形成本与优化实践
java·前端·数据库
Knight_AL1 天前
MySQL InnoDB 锁机制深度解析:行锁、表锁、间隙锁、临键锁(Next-Key Lock)
数据库·mysql
良策金宝AI1 天前
工程设计企业AI试用落地路径:从效率验证到知识沉淀
数据库·人工智能·知识图谱·ai助手·工程设计
panzer_maus1 天前
Redis的简单介绍(2)-处理过期Key的策略
数据库·redis·缓存
仗剑恬雅人1 天前
LINUX数据库高频常用命令
linux·运维·服务器·数据库·ssh·运维开发