0%

C#.NET项目开发总结

生产过程防呆纠错系统客户端的开发总结

话是这么说,其实没打算写太正经的东西。


DataSet及相关类

ADO.NET最核心的数据库操作类。
(关于ADO.NET:https://www.cnblogs.com/liuhaorain/archive/2012/02/06/2340409.html
上面的博客详细介绍了.NET的数据库操作技术ADO.NET的相关内容,一直到基本的连接和增删改查都有介绍(?)。
可惜太监了。

我这里只作一些功能和与之相关的要点的总结。

功能

引用命名空间:

1
using System.Data

类名:DataSetDataTableDataRow

DataSet以及其相关类,主要作用就是按照需要把数据库中的部分数据复制下来。然后对DataSet进行增删改查后,再将这些变更同步回去。而涉及到与实际数据库进行复制和同步的操作,就是由DataAdapter类完成的。

DataTable类对应数据库中的表,是复数DataRow的集合。
DataSet类对应整个数据库,是复数DataTable的集合。
DataRow类对应某条数据,值得一提的是,一个新DataRow的实例化是以

1
DataRow row = 某个DataTable实例.NewRow();

这样的方法实现的。(而这条新Row需要通过DataTable.Rows.Add(DataRow r)的方法添加进DataSet。)

类名:(某个数据库的)DataAdapter

使用DataAdapter首先要将该数据库的运行库(.dll)引用进项目,然后在命名空间引用。

DataAdapter从数据库复制数据需要两个参数,可在实例化时指定:
数据库连接字符串:特定格式,包含有数据库的IP,连接数据库用到的用户名和密码等。
查询字符串:SQL语句,以SELECT打头,用于指定你要增删改查的数据范围。

随后使用DataAdapter.Fill(DataSet ds)方法将数据库内容填充进DataSet中。

当完成对DataSet的增删改之后,要多进行一步奇怪的操作:
需要实例化一个CommandBuilder,实例化方法的参数就是这个DataSet。这一步的意义是构建这个DataSet的同步SQL语句集。(我不能理解这一步的意义,但一定要有。)

然后使用DataAdapter.Update(DataSet ds)方法将DataSet修改同步到数据库。

关于DataTable和DataRow的操作并不复杂,可自行查询,不再赘述。

要点

1.不要将Adapter作为类成员变量!或者,在使用完之后立刻Dispose()掉。

没有详细研究过,但连续使用两次Fill()或Update()会产生不可预测的数据库操作错误,即时释放掉是明智的选择。
此外,使用Fill()之前要将DataSet清空。

DataAdapter的两项参数要保存好,以保证Fill()和Update()的Adapter相同。

2.DataRow和DataTable以址传递。

DataTable.Select(选择字符串*)会返回一个DataRow数组,不管是直接修改这个数组中某一条的某一个数据,还是将这个数组中的某一条取出赋值给一个新的DataRow然后再做修改,这些修改都是直接修改的DataSet中的数据,会在Update()后同步到数据库上。

选择字符串*,类似SQL查询语句,但不完全一样,并非所有关键字都可用。
可见:https://www.cnblogs.com/hanke123/p/5881470.html或自行搜索DataTable的Select()用法

其他

数据库也可以通过Connection类和Command类进行简单的操作,见:https://www.cnblogs.com/qi123/p/9217010.html


SerialPort类及其事件

串口类的使用并不复杂,正如串口原理本身一般:https://blog.csdn.net/cy757/article/details/4474930

值得一提的是,串口的数据传输并不稳定,同样一串字符串,会被分割成不可控的任意长度被读取,并触发串口类的DataReceived事件。

对此,如果对于接收数据有实时处理的需求,我不建议将处理字符串的方法直接放到该事件中执行。应只将串口中的数据赋值给字符串类型的类成员变量,然后再用其他方式处理该变量。

对于事件和委托的学习和理解还远远不够,对此先不做整理。


C#控件相关

C#的控件常用的就那些,实际使用大多也是直接在设计器上修改,少数需要涉及代码的内容可以通过搜索用法完成,不再赘述。

ListView相关。http://blog.sina.com.cn/s/blog_62c4551e01014sr6.html

TextBox输入限制。https://blog.csdn.net/weixin_44135331/article/details/110876573


C#编程规范等杂项

命名规范:https://www.cnblogs.com/cg919/p/10512749.html
注释规则待补充。

关于Switch语句。C#不允许贯穿,每个case都必须有一个break作为结束,除非其代码段完全为空。

字符串处理。C#控件显示的字符串,只有以"\r\n"的形式才能确实地换行,分割时要注意清除干净,添加时要记得写全。


技术栈补全

  • C#事件和委托
  • 以太网通讯——PLC通讯
  • Web前端及后台
  • 数据库安全——加密和服务器