畢業后,第一份工作是寫單片機(C)代碼的,這一份也是寫C代碼的(emmmmmmmmm,雖然入職兩個多月了一行代碼也沒寫過啊哈哈哈哈),所以好久沒寫過博客了,周末沒事干(沒有女朋友,單身23年嗚嗚嗚嗚嗚)就學了下C#和MySQL,然后就寫了個最簡單的類似於“hello world”的小項目-圖書管理系統,這部分博文只有用戶管理部分的,這篇文章主要是記錄自己的學習過程。

C#沒什么好說的,只不過是一種面向對象編程語言,大學期間上課不認真聽講學習的,啊哈哈哈哈,MySQL是在bilibili看某智博客的視頻學的,都算是半路出家的,所以博文水平低,質量差大佬勿噴,當然這也是我自己學習的記錄,大佬可以細心指教,千恩萬謝。
首先說下C#的三層架構,如下這段話是從大佬的博客里面學習的:
三層架構分為:表現層(UI(User Interface))、業務邏輯層(BLL(Business Logic Layer))、數據訪問層(DAL(Data Access Layer))再加上實體類庫(Model)。實體類庫(Model),主要存放數據庫中的表字段;數據訪問層(DAL),主要是存放對數據類的訪問,即對數據庫的添加、刪除、修改、更新等基本操作;業務邏輯層(BLL)對傳送數據進行邏輯判斷分折,並進行傳送正確的值;表現層(UI)即用戶界面層。
如下圖所示,是我的工程文件結構,2_StudentForm是表示(UI)層,添加的是Windows窗體應用程序;StudentBLL是業務邏輯層,StudentDAL是數據訪問層,StudentModel是實體類庫,這三個均是類庫。

UI層沒什么好說的,我這種菜鳥還是喜歡拖控件,然后寫需要的事件就行。
Model層與數據庫字段表相對應,如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StudentModel
{
public class UserInfoModel
{
/// <summary>
/// 用戶ID
/// </summary>
public int Id { get; set; }
/// <summary>
/// 用戶名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 密碼
/// </summary>
public string Pwd { get; set; }
}
}
DAL是數據庫操作的相關代碼,在DAL類庫中引用Model類庫,我就寫了最基礎的sql操作代碼,如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using StudentModel;
using MySql.Data.MySqlClient;
using System.Data;
namespace StudentDAL
{
public class UserInfoDAL
{
const string str = "server = localhost;user = root;password=1234;database = student";
MySqlConnection conn = new MySqlConnection(str);
/// <summary>
/// 從數據庫查找用戶
/// </summary>
/// <param name="_userInfoModel"></param>
/// <returns></returns>
public UserInfoModel MySqlSelectUser(UserInfoModel _userInfoModel)
{
conn.Open();
string sqlstr = String.Format("select * from userinfo where name = '{0}' and pwd = '{1}'", _userInfoModel.Name, _userInfoModel.Pwd);
MySqlCommand cmd = new MySqlCommand(sqlstr, conn);
MySqlDataReader reader = cmd.ExecuteReader();
UserInfoModel user = new UserInfoModel();
if(reader.Read())
{
user.Id = reader.GetInt32(0);
user.Name = reader.GetString(1);
user.Pwd = reader.GetString(2);
}
conn.Close();
return user;
}
/// <summary>
/// 從數據庫查找用戶名
/// </summary>
/// <param name="_userInfoModel"></param>
/// <returns></returns>
public UserInfoModel MySqlSelectName(UserInfoModel _userInfoModel)
{
conn.Open();
string sqlstr = String.Format("select * from userinfo where name = '{0}'", _userInfoModel.Name);
MySqlCommand cmd = new MySqlCommand(sqlstr, conn);
MySqlDataReader reader = cmd.ExecuteReader();
UserInfoModel user = new UserInfoModel();
if (reader.Read())
{
user.Id = reader.GetInt32(0);
user.Name = reader.GetString(1);
user.Pwd = reader.GetString(2);
}
conn.Close();
return user;
}
/// <summary>
/// 查詢所有數據
/// </summary>
/// <returns></returns>
public List<UserInfoModel> MySqlSelectUserAll()
{
List<UserInfoModel> list = new List<UserInfoModel>();
conn.Open();
string sqlstr = "select * from userinfo";
DataTable dt = new DataTable();
MySqlDataAdapter rd = new MySqlDataAdapter(sqlstr, conn);
rd.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
UserInfoModel ai = new UserInfoModel
{
Id = Convert.ToInt32(dr["Id"]),
Name = dr["Name"].ToString(),
Pwd = dr["Pwd"].ToString()
};
list.Add(ai);
}
conn.Close();
return list;
}
/// <summary>
/// 刪除用戶
/// </summary>
/// <param name="_userInfoModel"></param>
public int MySqlDelUser(UserInfoModel _userInfoModel)
{
conn.Open();
string sqlstr = String.Format("delete from userinfo where name = '{0}'", _userInfoModel.Name);
MySqlCommand cmd = new MySqlCommand(sqlstr, conn);
int iRet = cmd.ExecuteNonQuery();
conn.Close();
return iRet;
}
/// <summary>
/// 插入數據
/// </summary>
/// <param name="_userInfoModel"></param>
/// <returns></returns>
public int MySqlInsertUser(UserInfoModel _userInfoModel)
{
conn.Open();
string sqlstr = String.Format("insert into userinfo (name,pwd) values('{0}','{1}')",_userInfoModel.Name,_userInfoModel.Pwd);
MySqlCommand cmd = new MySqlCommand(sqlstr, conn);
int iRet = cmd.ExecuteNonQuery();
conn.Close();
return iRet;
}
/// <summary>
/// 更新數據
/// </summary>
/// <param name="_userInfoModel"></param>
/// <returns></returns>
public int MySqlUpdateUserPwd(UserInfoModel _userInfoModel)
{
conn.Open();
string sqlstr = String.Format("update userinfo set Pwd = '{0}' where name = '{1}'",_userInfoModel.Pwd,_userInfoModel.Name);
MySqlCommand cmd = new MySqlCommand(sqlstr, conn);
int iRet = cmd.ExecuteNonQuery();
conn.Close();
return iRet;
}
}
}
BLL是界面操作所做的相關處理,在BLL類庫中引用DAL和Model類庫,如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using StudentDAL;
using StudentModel;
namespace StudentBLL
{
public class UserInfoBLL
{
/// <summary>
/// 判斷用戶是否存在
/// </summary>
/// <param name="name"></param>
/// <param name="pwd"></param>
/// <returns></returns>
public bool CheckUserExist(string name,string pwd)
{
UserInfoModel user = new UserInfoModel();
user.Name = name;
user.Pwd = pwd;
UserInfoDAL userInfoDAL = new UserInfoDAL();
UserInfoModel userInfoModel = userInfoDAL.MySqlSelectUser(user);
if (userInfoModel.Name == name && userInfoModel.Pwd == pwd)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 判斷用戶名是否存在
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public bool CheckUserName(string name)
{
UserInfoModel user = new UserInfoModel();
user.Name = name;
UserInfoDAL userInfoDAL = new UserInfoDAL();
UserInfoModel userInfoModel = userInfoDAL.MySqlSelectName(user);
if (userInfoModel.Name == name)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 查看所有的用戶
/// </summary>
public List<string> CheckAllUser()
{
List<UserInfoModel> userInfoModel = new List<UserInfoModel>();
List<string> list = new List<string>();
UserInfoDAL userInfoDAL = new UserInfoDAL();
userInfoModel = userInfoDAL.MySqlSelectUserAll();
for (int i = 0; i < userInfoModel.Count; i++)
{
list.Add(userInfoModel[i].Name);
}
return list;
}
/// <summary>
/// 刪除所選中的用戶
/// </summary>
public bool DelSelUser(string selname)
{
UserInfoModel userinfomodel = new UserInfoModel();
UserInfoDAL userinfodal = new UserInfoDAL();
userinfomodel.Name = selname;
if (userinfodal.MySqlDelUser(userinfomodel) > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 添加用戶
/// </summary>
/// <param name="name"></param>
/// <param name="pwd"></param>
public int InsertUser(string name, string pwd)
{
UserInfoModel userinfomodel = new UserInfoModel();
UserInfoDAL userinfodal = new UserInfoDAL();
userinfomodel.Name = name;
userinfomodel.Pwd = pwd;
if (CheckUserName(name) == true)
{
return -1;
}
else
{
return userinfodal.MySqlInsertUser(userinfomodel);
}
}
/// <summary>
/// 更新用戶密碼
/// </summary>
/// <param name="_userInfoModel"></param>
/// <returns></returns>
public bool UpdateUserPwd(string name,string pwd)
{
UserInfoModel userinfomodel = new UserInfoModel();
UserInfoDAL userinfodal = new UserInfoDAL();
userinfomodel.Name = name;
userinfomodel.Pwd = pwd;
if (userinfodal.MySqlUpdateUserPwd(userinfomodel) > 0)
{
return true;
}
else
{
return false;
}
}
}
}
代碼已上傳至CSDN,鏈接如下:
https://download.csdn.net/download/qq_28091109/11292751
我是半路出家的外行,這也只是我個人學習記錄,大佬勿噴
