有点用处开发经验 祭奠我的C#开发历程

开发 后端
博主下个月就要去进行Java开发了,以后C#碰的就少了,平时一些经验都记在OneNote里面,现在收集整理出来,因为只能利用交接工作的打酱油的时间,陆续更新中……

C#篇:

1、目标平台的选择64位操作系统在编译VS里的程序时,根据需要设置项目属性的“目标平台”为x86。如果设置为AnyCPU,则在VS 2005里面是不能“编辑并继续”的。

一些有点用处的开发经验 祭奠我的C#开发历程

——在选择x86和AnyCPU都可以在32位操作系统上使用。

——选择x86在64位服务器上运行,可能会造成类库无法加载的问题。此问题在后文IIS经验中解释。

2、取DataTable或者DataGridView里面值的两种常用方法:

 

 

  1. dt.Rows[i].Cells["ID"].Value.ToString(); 
  2. dt.Rows[0]["Name"].ToString(); 

 

前者需要从Value中取值,使用起来不是太方便。后者且不能加Value

——所有的中括号中都可以使用序号(从0开始)或是字段名(列名、行名)

3、如果没有使用Linq(一直都用的2.0框架……),可以使用此法来写执行SQL。如:

 

 

  1. string strSQL = string.Format("Insert table_1 values('{0}', '{1}',{2},{3})" 

 

如果是varchar类型,必须使用'';如果是int,目前发现既可使用''也可以不使用,往往写脚本,嫌麻烦,就都带上了'',貌似执行上不会有问题,但不知道性能会不会有所下降。如果有知道的朋友请在评论区说下咯。

——有朋友评论说这个容易被注入式攻击。查了下避免注入式攻击的方法:1、使用存储过程;2、参数化SQL语句。

——以下是使用参数化SQL语句的方式:

  1. SqlCommand command = new SqlCommand("select * from UserInfo where sex=@sex and age>@age", connection);  
  2. SqlParameter parameter = new SqlParameter("@age", SqlDbType.Int);//注意UserInfo表里age字段是int类型的  
  3. parameter.Value = 30;  
  4. command.Parameters.Add(parameter);//添加参数  
  5. SqlDataAdapter adapter = new SqlDataAdapter(command); 

 

4、DLL引用了,但是在代码里面还是无法调用。

尝试在DLL的属性里面设置使用特定版本为False

5、类库里的方法在调用的时候,如何让方法上面显示自定义说明?

勾选一下项目:属性——生成——XML文档文件

——使用类库的时候,把对应的XML也拷贝的相同目录,这样会在VS中看到类库函数的自定义说明。前提是代码里面使用“///”生成注释。

6、博友分享:VS2010在新建.net 4.0项目时,经常会默认一个Clent Profile的东东,经常出现问题。。。切换为标准框架即可。

VS2005不存在这个问题,VS2013好像也不存在这个问题。

7、未能加载程序集

这个问题的范畴过于庞大,能够造成这方面问题的原因可能有很多,我记得比较分散,后面找到了陆续补充。

——版本不匹配。

——类库生成x86还是x64还是AnyCPU,最好能够做到目标平台保持一致。

——两个项目引用路径不同,或生成个路径不同。

#p#

SQL篇

1、有关SQL中Join的问题。

left join的那个表(子表),on的字段存在两条,那么查询出来的结果会分为两条。

——所以对于子表内容掌控不准确,很可能会查询出不符合需求的结果。

例子:

(1)两个表的内容是

 

一些有点用处的开发经验 祭奠我的C#开发历程

(2)left join的结果

一些有点用处的开发经验 祭奠我的C#开发历程

2、同一张表可以Left Join两次

一些有点用处的开发经验 祭奠我的C#开发历程

3、Union的时候,如果两个字段类型不同,必须进行转换,否则会出错。

 

一些有点用处的开发经验 祭奠我的C#开发历程

如上图convert。注意使用union all可以显著提高速度,这样的话,不会对查询结果进行排序。

思想以及设计理念:

1、逻辑删除与物理删除的概念?

物理删除时真正的删除了,逻辑删除还保留数据在数据库中的位置,但是修改其删除标志为已删除状态(貌似这个在大学里面就学了……)

2、在UI层(用户操作界面),如果出错了,或者操作失败了,应该提醒用户下一步应该做什么。

如:当用户进行操作B的时候,需要先开启选项A。设当前选项A为关闭状态,用户进行操作B,此时应提示:“操作失败,选项A未启用,请到XXX设置中开启选项A”。在某些应用中,甚至可以增加直接跳转到设置的地方,或者直接修改设置。根据需要而定。

——提醒用户改做什么,个人认为是应该的,体现友好度。但是不应该把代码中具体的异常暴露出来,具体异常应该记录日志,并使用异常编码,在文档中、代码中管理起来。

责任编辑:王雪燕 来源: 博客园
相关推荐

2011-06-03 10:15:13

2009-06-24 10:25:25

C#泛型

2015-04-02 09:28:27

C#开发人员面试经验

2009-08-27 16:54:59

C#开发技巧

2009-08-20 10:24:52

C#开发WinForm

2009-08-20 09:30:03

C#开发WinForm

2017-01-05 16:29:00

2009-09-16 13:05:32

C#组件开发

2009-08-10 13:05:06

C# DLLC# Delphi开发

2010-11-01 06:38:03

Windows Ser

2019-01-14 08:52:25

开发经验浏览器

2009-08-24 09:55:24

C#集成开发环境

2009-08-24 10:10:09

C#复合控件

2010-06-03 10:26:29

开发MySQL中文乱码

2009-08-24 16:11:35

C#项目开发

2011-06-08 10:06:32

C#

2012-03-31 11:25:48

C#

2023-03-28 23:27:36

C#编程

2018-12-24 11:05:41

2015-04-07 15:11:58

移动·开发技术周刊
点赞
收藏

51CTO技术栈公众号