<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Depths_p的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Depths_p</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Depths_p]]></copyright><item><title><![CDATA[C#基础学习25（ProductManagmentSystem）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/93388793</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/93388793</guid><author>Depths_p</author><pubDate>Sun, 23 Jun 2019 21:54:39 +0800</pubDate><description><![CDATA[商品管理系统

1.按照三层架构创建项目：



2.引用

3.制作窗体界面



4. 新建实体模型Model


public class Product
{
    private int id;

    public int Id
    {
        get { return id; }
        set { id = value; }
    }
    privat...]]></description><category></category></item><item><title><![CDATA[C#基础学习24（三层架构及案例）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/93383747</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/93383747</guid><author>Depths_p</author><pubDate>Sun, 23 Jun 2019 16:40:17 +0800</pubDate><description><![CDATA[一、三层架构

1.表现层（UI）：User Interface，通俗讲就是展现给用户的界面，即用户在使用一个系统的时候他所见所得

2.业务逻辑层（BLL）：Business Logic Layer，针对具体问题的操作，也可以说是对数据层的操作，对数据业务逻辑处理。（备注：又称领域层，常用于业务规则、数据访问、合法性校验）

3.数据访问层（DAL）：Data Access Layer，针对数据...]]></description><category></category></item><item><title><![CDATA[C#基础学习23（DataSet查询和更新数据）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/93381896</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/93381896</guid><author>Depths_p</author><pubDate>Sun, 23 Jun 2019 15:29:04 +0800</pubDate><description><![CDATA[窗体代码：


DataSet ds = new DataSet();
//点击查询
private void 查询数据ToolStripMenuItem_Click(object sender, EventArgs e)
{
    LoadDSData();
            
}
//点击更新
private void 修改更新ToolStripMenuItem_Click(obje...]]></description><category></category></item><item><title><![CDATA[C#基础学习22（DataSet和DataTable）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/93380772</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/93380772</guid><author>Depths_p</author><pubDate>Sun, 23 Jun 2019 14:11:59 +0800</pubDate><description><![CDATA[DataSet可以比作一个内存中的数据库，DataTable是一个内存中的数据表，DataSet里可以存储多个DataTable

DataSet：数据集，一般包含多个DataTable，用的时候，dataset["表名"]得到DataTable

DataTable：数据表







例：


static void Main(string[] args)
{
    //DataSet...]]></description><category></category></item><item><title><![CDATA[C#基础学习21（封装SQLHelper）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/92795259</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/92795259</guid><author>Depths_p</author><pubDate>Tue, 18 Jun 2019 16:31:16 +0800</pubDate><description><![CDATA[优点：代码重用率高，便于维护易修改，代码更简洁、条理

在App.config中添加


&lt;connectionStrings&gt;
  &lt;add name="connStr" connectionString="server=localhost;user id=root;password=123;database=pqxit;charset=utf8;port=3306"/&gt;...]]></description><category></category></item><item><title><![CDATA[C#基础学习20（防止SQL注入攻击）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/92779039</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/92779039</guid><author>Depths_p</author><pubDate>Tue, 18 Jun 2019 15:14:25 +0800</pubDate><description><![CDATA[登录演示：

代码：


//点击登录按钮
private void btnLog_Click(object sender, EventArgs e)
{
    object m_obj;
    //获取输入的用户名密码
    string userName = txtName.Text.Trim();
    string userPsw = txtPsw.Text.Trim();
   ...]]></description><category></category></item><item><title><![CDATA[C#基础学习19（数据库增删改查）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/92682188</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/92682188</guid><author>Depths_p</author><pubDate>Mon, 17 Jun 2019 19:11:06 +0800</pubDate><description><![CDATA[效果图：



1.引用MySql.Data.dll并在程序中 using MySql.Data.MySqlClient;

2.写一个Product的实体类

3.制作窗体

4.思路代码：


public partial class Form1 : Form
{
    //连接字符串
    private string connStr = "server=localhost;user...]]></description><category></category></item><item><title><![CDATA[C#基础学习18（连接MySql数据库）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/92606175</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/92606175</guid><author>Depths_p</author><pubDate>Mon, 17 Jun 2019 16:26:21 +0800</pubDate><description><![CDATA[一、连接数据库

Data Source=;指定服务器IP（计算机名） 服务器\实例名

Initial Catelog=;初始化分类，要连那个数据库名

UserId=sa；Password=sa；用户名密码

Integrated Security=true；使用Windows验证方法

另外一种写法（旧）："server=.;database=Mydata;uid=sa;pwd=sa"

...]]></description><category></category></item><item><title><![CDATA[C#基础学习17（Socket通信，模拟在线聊天案例）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/92407937</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/92407937</guid><author>Depths_p</author><pubDate>Sun, 16 Jun 2019 18:03:47 +0800</pubDate><description><![CDATA[Scoket编程模型

服务器端

1.创建Socket对象，设置协议、传输方式等（连接Socket）  Socket（）

2.绑定IP与端口（设置要监听的IP与端口）   Bind（）

3.开始监听   Listen()

4.开始接受客户端连接 //阻塞线程，同时也需要循环不断接受用户连接   Accept（）

5.接受了哭护短的连接，生成一个新的Sock...]]></description><category></category></item><item><title><![CDATA[C#基础学习16（线程池、死锁）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/92405554</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/92405554</guid><author>Depths_p</author><pubDate>Sun, 16 Jun 2019 16:47:37 +0800</pubDate><description><![CDATA[一、线程池

ThreadPool.SetMaxThreads(5,5);//设置线程池大小：最多线程个数(这里是5个)

ThreadPool.QueueUserWorkItem(new WaitCallback ( 方法名 ) );//将方法排入队列以便执行

ThreadPool.QueueUserWorkItem(new WaitCallback ( 方法名 ) ,参数);//带参数的方...]]></description><category></category></item><item><title><![CDATA[C#基础学习15（反射进阶：反射调用方法、反射写插件）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/92091937</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/92091937</guid><author>Depths_p</author><pubDate>Sat, 15 Jun 2019 15:47:57 +0800</pubDate><description><![CDATA[反射用到的命名空间：


System.Reflection

System.Type

System.Reflection.Assembly

一、反射调用方法

例：


class Program
{
    static void Main(string[] args)
    {
        //调用无参方法
        Type m_type = typeof(Person);...]]></description><category></category></item><item><title><![CDATA[C#基础学习14（事件、反射）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/92088212</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/92088212</guid><author>Depths_p</author><pubDate>Sat, 15 Jun 2019 15:47:15 +0800</pubDate><description><![CDATA[一、事件

1.事件是通过委托实现的，委托才是事件能正常执行的核心

2.定义事件：使用Event关键字声明  public event MyDelegate MDL;

3.事件帮我们做了两件事情：

   (1)创建一个对应的private的委托对象

   (2)创建了一个“事件属性”（类似于蜀星的get和set），里面包含了add和remove方法

4.事件对象只能用 “...]]></description><category></category></item><item><title><![CDATA[C#基础学习13（多播委托、泛型委托）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/92068779</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/92068779</guid><author>Depths_p</author><pubDate>Sat, 15 Jun 2019 10:39:47 +0800</pubDate><description><![CDATA[一、多播委托

1.可绑定多个方法，相当于创建了一个委托组合

2.作何的委托必须是同一个类型

3.委托的组合是给事件用的，普通的委托很少用

4.委托可以直接赋值直接调用，委托的变量可以用+=、-=的方式赋值

例：同C#基础学习13中委托案例


class Program
{
    static void Main(string[] args)
    {
        //Greet...]]></description><category></category></item><item><title><![CDATA[C#基础学习12（委托、窗体传值）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/90641217</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/90641217</guid><author>Depths_p</author><pubDate>Tue, 28 May 2019 16:05:53 +0800</pubDate><description><![CDATA[一、委托（delegate）

委托是一种数据类型

委托是存放符合某种方法签名的方法的地址的集合

解决方法无法作为参数传递

例：有两个方法，分别是中文打招呼和英文打招呼，两个方法作为参数来传递


class Program
{
    static void Main(string[] args)
    {
        Greet("李大锤",English);//调用打招呼方法，并...]]></description><category></category></item><item><title><![CDATA[C#基础学习11（敏感词汇审核案例、StringBuilder类）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/90638420</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/90638420</guid><author>Depths_p</author><pubDate>Tue, 28 May 2019 14:59:34 +0800</pubDate><description><![CDATA[一、StringBuilder（可变字符序列）

String对象，一旦赋值就不可改变（叫做字符串的恒定性），赋值完了之后，再对String进行拼接，赋值等，都会再内存里面重新分配一个新的内存空间，StringBuilder解决了这个问题。

方法：

Append：可以将文本或对象添加到结尾处

Capacity：设置容量和长度

Insert：添加到指定位置

AppendFormat：添加到...]]></description><category></category></item><item><title><![CDATA[C#基础学习10（正则表达式）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/90603168</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/90603168</guid><author>Depths_p</author><pubDate>Mon, 27 May 2019 16:00:04 +0800</pubDate><description><![CDATA[一、正则表达式

以^符号开始，以$符号结束



例1：（15位或者18位身份证验证）

   引入命名空间

  using System.Text.RegularExpressions;

代码实现：


static void Main(string[] args)
{
    string IDnumber = "^([1-9][0-9]{14}|[1-9][0-9]{16...]]></description><category></category></item><item><title><![CDATA[C#基础学习09（XML）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/90406046</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/90406046</guid><author>Depths_p</author><pubDate>Tue, 21 May 2019 16:05:21 +0800</pubDate><description><![CDATA[一、认识XML

1.特殊符号：

字符
			实体引用
		&amp;
			&amp;amp;
		&gt;
			&amp;gt;
		&lt;
			&amp;lt;
		"
			&amp;quot;
		'
			&amp;apos;
		2.CDATA部件（可不被xml所解析）

用法：  &lt;![CDATA[内容]]&gt;

二、解析xml

1.准备好xml文件


...]]></description><category></category></item><item><title><![CDATA[C#基础学习08（序列化和反序列化）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/90263099</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/90263099</guid><author>Depths_p</author><pubDate>Thu, 16 May 2019 14:43:33 +0800</pubDate><description><![CDATA[1.引用命名空间


using System.Runtime.Serialization.Formatters.Binary;//引入命名空间

2.类必须是可序列化的


[Serializable]    //使此类可序列化
public class Person
{
    private string name;

    public string Name
    {
       ...]]></description><category></category></item><item><title><![CDATA[C#基础学习07（熟悉Winform、消息弹窗、IO文件操作）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/90238813</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/90238813</guid><author>Depths_p</author><pubDate>Wed, 15 May 2019 20:28:17 +0800</pubDate><description><![CDATA[一、消息弹窗



1.窗体跳转


OrderForms of = new OrderForms();//new出新的窗体对象
this.Hide();        //隐藏当前窗体
of.ShowDialog();    //打开窗体
of.Show();          //打开隐藏的窗体

二、IO文件操作

例：通过路径读取活写入文本文件，显示到窗体中，复制按钮为复制一个视频案例。...]]></description><category></category></item><item><title><![CDATA[C#基础学习06（接口、IComparable、泛型接口）]]></title><link>https://blog.youkuaiyun.com/Depths_p/article/details/90213648</link><guid>https://blog.youkuaiyun.com/Depths_p/article/details/90213648</guid><author>Depths_p</author><pubDate>Wed, 15 May 2019 13:23:21 +0800</pubDate><description><![CDATA[一、接口（interface）

1.接口可多实现

2.实现方法与继承类相同

3.默认public，方法前不能加访问修饰符


public class Student:IComparable
{ }
//如果类继承了父类
public class Student:Person,IComparable
{ }

二、IComparable接口

List中如果放的是一个对象，如果对List进行...]]></description><category></category></item></channel></rss>