在之前写C#语言的程序的时候,由于程序比较简单并没有深入的去了解和记住一些关键内容,本文主要记录自己的简单理解并把大神讲解的网址整理一下。
一、事件委托
生成一个空白的的C#窗体,上面添加一个新建的按钮。单击按钮可以看到在属性栏显示按钮的属性,这个按钮的名字是button1。双击button1按钮,直接跳转程序自动生成的代码。在button1_Click 函数中添加需要的代码,debug后,在生成的程序中点击button按钮就可以执行相应的代码,其中sender此时代表的是button,而e代表的是相关的参数。
|
10 11 12 |
private void button1_Click(object sender, EventArgs e){} |
如果想获得系统自动获取的sender的值和e中的值
|
10 11 12 13 |
Button senderButton = (Button)sender; // 根据sender引用控件 senderButton.Text = e.Button.ToString(); // 根据e中的button参数,判断是左键按下还是右键 |
右键点击button1_Click,在弹出的右键菜单中点击查找所有引用,双击查找结果。
this.button1.Click即鼠标点击是事件;
System.EventHandler是系统自动建立的委托;
+=是订阅;
最终触发this.button1_Click方法;
System.EventHandler是系统自动建立的委托;
+=是订阅;
最终触发this.button1_Click方法;
|
10 11 12 |
this.button1.Click += new System.EventHandler(this.button1_Click); |
贴出在网上找到的一段代码,展示事件的委托的过程和结果。
大神讲解网址1:https://www.cnblogs.com/jiangshuai52511/p/7600472.html
大神讲解网址2:https://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html
大神讲解网址3:https://www.cnblogs.com/JimmyZhang/archive/2008/08/22/1274342.html
大神讲解网址1:https://www.cnblogs.com/jiangshuai52511/p/7600472.html
大神讲解网址2:https://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html
大神讲解网址3:https://www.cnblogs.com/JimmyZhang/archive/2008/08/22/1274342.html
二、UDP
网上的程序中客户端是发送数据,服务器端是接收数据
|
10 11 12 13 14 15 16 17 18 19 20 |
//接收数据 UdpClient udpClient = new UdpClient(new IPEndPoint(IPAddress.Parse("192.168.3.1"), 8080)); while (true) { IPEndPoint point = new IPEndPoint(IPAddress.Any, 0); byte[] data = udpClient.Receive(ref point); string message = Encoding.UTF8.GetString(data); } udpClient.Close(); |
|
10 11 12 13 14 15 16 17 |
//发送数据 UdpClient udpClient = new UdpClient(); string message = "123"; byte[] data = Encoding.UTF8.GetBytes(message); udpClient.Send(data,data.Length,new IPEndPoint(IPAddress.Parse("192.168.3.1"), 8080)); udpClient.Close(); |
三、MySQL
【建立数据库】
使用一个数据库需要先建立一个数据库,可以使用MySQL快速建立一个数据库,然后在程序中使用需要如下5个变量:
使用一个数据库需要先建立一个数据库,可以使用MySQL快速建立一个数据库,然后在程序中使用需要如下5个变量:
|
10 11 12 13 14 15 16 |
string server;//数据库服务器IP,在本地也可以为localhost string port;//数据库端口号一般是8000,与其它设备冲突的话可以修改 string database;//数据库名称 string user;//数据库用户名 string password;//数据库密码 |
引用mysql头,调用相关模块:
|
10 11 12 |
using MySql.Data.MySqlClient; |
验证数据库:
|
10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
private string connectStr;//数据库拼接字符串 private MySqlConnection conn;//数据库 //连接数据库 connectStr = String.Format("server={0};port={1};database={2};user={3};password={4}", Server, Port, Database, User, Password); conn = new MySqlConnection(connectStr); conn.Open(); if (!conn.Ping())//检测数据库是否连接成功,不成功重新连接 { conn.Open(); } |
检测数据库数据表是否在存在:
|
10 11 12 13 14 15 16 17 18 19 20 21 22 |
string Database = "Database";//数据库名 string tablenamne = "tablenamne";//数据表名 private MySqlConnection conn;//数据库 string sqlStr = string.Format("select * from information_schema.tables where table_schema='{0}' and table_name='{1}'", Database, tablename); MySqlCommand cmd = new MySqlCommand(sqlStr, conn); MySqlDataReader reader = cmd.ExecuteReader(); if (reader.HasRows == true) { reader.Close(); } |
创建数据表,数据表的表头的变量要注明字节大小 :
1.blob是二进制大文件存储
2.char(20)是char数组,如果是字符串,也要估计一个长度
3.double(11,8)是double类型,长度是位,小数点后8位
4.smallint是2个字节整型
更多格式请查找sql数据格式
1.blob是二进制大文件存储
2.char(20)是char数组,如果是字符串,也要估计一个长度
3.double(11,8)是double类型,长度是位,小数点后8位
4.smallint是2个字节整型
更多格式请查找sql数据格式
|
10 11 12 13 14 15 16 17 |
string tablenamne = "tablenamne";//数据表名 private MySqlConnection conn;//数据库 string sqlStr2 = string.Format("create table `{0}`{1}", tablename, "(ID int primary key auto_increment,shuju1 blob,shuju2 char(20),shuju3 double(11,8),shuju4 smallint)"); MySqlCommand cmd2 = new MySqlCommand(sqlStr2, conn); cmd2.ExecuteNonQuery();//开始执行 |
【获取数据库内数据】
|
10 11 12 13 14 15 16 17 18 |
string tablename = “chuchu”//数据库表格名称 private MySqlConnection conn;//数据库 MySqlCommand com = new MySqlCommand(tablename, conn); MySqlDataReader dr = com.ExecuteReader(); idList.Add(dr.GetInt32(0));//获取第一列所有值 id = idList[0];//获取第一行第一列的值 |
【将数据存储到数据库】
|
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
MySqlCommand cmd = new MySqlCommand(); cmd.Connection = conn; MySqlTransaction sqlTransaction = conn.BeginTransaction(); cmd.Transaction = sqlTransaction; string tableName = "tableName "; string sqlstr = string.Format("insert into `{0}`(shuju1, shuju2, shuju3, shuju4, values(@shuju1, @shuju2, @shuju3, @shuju4)", tableName); cmd.CommandText = sqlstr; //插入数据 cmd.Parameters.AddWithValue("shuju1", null); cmd.Parameters.AddWithValue("shuju2", "I love chuchu"); cmd.Parameters.AddWithValue("shuju3", "3.1415926"); cmd.Parameters.AddWithValue("shuju4", "2"); cmd.ExecuteNonQuery();//执行操作 cmd.Parameters.Clear();//清除数据 sqlTransaction.Commit();//完成提交 |