c整理学习

 C #篇:

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

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

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

  2 、取 DataTable 或者Da taGrid View 里面值得两种常用方法: dt、Rows[i]、Cells[”ID”]、Value、ToString(); dt、Rows[0][”Name"]、ToString(); 前者需要从 Value 中取值,使用起来不就是太方便.后者且不能加 Value。

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

  3 、如果没有使用Linq (一直都用得2、0 框架„„), 可以使行 用此法来写执行 S QL. 如: string strSQL = string、Format("Insert table_1 values("{0}', "{1}',{2},{3})" 如果就是varchar 类型,必须使用'';如果就是 int,目前发现既可使用’"也可以不使用,往往写脚本,嫌麻烦,就都带上了"',貌似执行上不会有问题,但不知道性能会不会有所下降.如果有知道得朋友请在评论区说下咯。

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

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

 Sqlmand mand = new Sqlmand(”select * from UserInfo where sex=sex and age>age”, connection);

 SqlParameter parameter = new SqlParameter(”age", SqlDbType、Int);//注意UserInfo 表里age字段就是 int类型得

 parameter、Value = 30;

 mand、Parameters、Add(parameter);//添加参数

 SqlDataAdapter adapter = new SqlDataAdapter(mand);

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

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

  5 、类库里得方法在调用得时候,如何让方法上面显示自定义说明? 勾选一下项目:属性——生成—-XML 文档文件

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

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

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

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

 (1)版本不匹配。

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

 (3)两个项目引用路径不同,或生成个路径不同。

  8 、* ** 、dll 标记为系统必备,必须对其进行强签名。

 (1)首先,参考这个地方.; (2)其次,出现这个问题,很有可能就是因为两个项目调用了相同得 DLL,但就是两个 DLL 版本不同,需要使这两个版本相同即可。

  9 、如何把Con sol e程序修改为Wi nForm 程序。

 (1)修改 Program、cs,按照 Winform 程序得方式来修改即可。

 (2)修改应用程序得属性,在应用程序—-输出类型中修改为 Windows 应用程序.

  10 、Da ta Gri dVi ew在使用其单击、双击事件时,如果需要用 使用 Row In dex, 需要判断其就是否小于 0 (表头), 否则会报错。

 1 1、当多个窗体都设置了 To pMost, 则只有最先设置得窗体在顶层。

 1 2、了 引用了 D LL ,但就是编译得时候还就是提示没有找到命名空间. 背景:这个问题很坑,很难发现问题所在。如一个解决方案中有项目A,生成类库,testA、dll;还有项目 B,生成类库,testB、dll。如果项目 B 得程序集名称与默认命名空间设置成了 testA,则编译不会报错,但就是您这时候想调用 testB中得方法时,会发现根本找不到,全就是 testA得方法!

 解决办法:右键查瞧项目(也有可能就是相关项目)得程序集名称与默认命名空间。就是否与类库名称一致。

 13 、如何修改 VS2008 转化后得项目为 200 5版。

  如上图:修改第一行 Format Version 为9、00、修改第二行为Visual Studio 2005。

 14 、 Da taG ridVi ew 时间格式设置 dataGridView1、Columns[n]、DefaultCellStyle、Format = ”yyyy-MM-dd”; 15 、当前不会命中断点。源代码与原始版本不同问题得解决方法 坑到爆得问题来了……这个问题出现大多就是因为混乱得项目引用。以下提供几个可能有用得解决方案: 方案一:在VS 菜单得生成中,选择“清理解决方案",然后重新生成解决方案。

 方案二:实际上有比这个办法更好得办法,就就是将出问题得文件用 notepad 打开,然后另存为 Unicode 编码,覆盖原来得文件。

 方案三:通过重新格式化出问题得源文件亦可以解决,即在 VS2005 中选择 “编辑”-—〉“高级”——〉“设置选定内容得格式”. 以上三个方案参考自:

 实际上我都用了,没用!

 最后解决办法得: 根据分析,以及这篇文章得内容,出现此问题就是因为我直接引用了DLL,而不就是直接引用项目。DLL还未重新编译得时候,直接运行了程序,则造成 DLL内容还没有更新,调试无法运行到断点。

 1 6、fl oat 、dou ble 与 与 d ecimal 得区别 #region float 单精度浮点 32bit, double 双精度浮点64bit, decimal就是高精度 128bit,浮点型。

 float double 就是 基本类型(primitive type),decimal 不就是。

 float 有效数字 7 位,范围

 ±1、5 × 10E−45 to ±3、4 × 10E38 double 有效数字 15/16 位,范围 ±5、0 × 10 E−324 to ±1、7 × 10E308

 decimal 有效数字 28/29 位,范围 ±1、0 × 10E−28 to ±7、9 × 10E28( E —- 下接几次方)

 decimal 得有效位数很大,达到了128位,但就是表示得数据范围却比 float 与 double 类型小. 使用得时候会对计算时得性能有影响。

 常数写法:

 float f = 12、3F;

 (带 F)

 double x=12、3;

 (不带就就是 double)

 decimal d = 12、30M; (带M)

  浮点数运算会有精度损失问题,有精度损失时程序不会报告,要程序员自己注意。

 #endregion 17 、如何清空Str ingBuilder

 1、Remove 例:

 StringBuilder val = new StringBuilder();

 val、Append(”、、、、");

 val、Remove(0,val、Length);//清空

  2、Replace

 StringBuilder val = new StringBuilder();

 val、Append("、、、、");

 val、Replace(val、ToString(), "”);//清空

  3、Length

  StringBuilder val = new StringBuilder();

 val、Append("、、、、");

 val、Length = 0;//清空经过测试第三种效率更高,推荐用第三种!

 SQL 篇 1 、有关 SQL 中 中 Joi n得问题。

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

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

 例子: (1)两个表得内容就是

 (2)left join 得结果

 以 2、同一张表可以 Left Joi n两次

 -—比如主表 A 为大扫除任务安排表,其中包含“扫地得学生 ID",“倒垃圾得学生ID”,可以通过两次关联学生信息表B,来在主表中查询出学生姓名. ——以下例子与上面得举例无关。仅供参考。

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

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

  4 、S QL

 Serv er 中链接服务器得使用方法 应用背景:应用软件包含多个数据库服务器,但就是某个查询需要从两个数据库服务器得数据库中查询数据得。

 使用说明:

 (1)添加一个链接服务器。

 exec sp_addlinkedserver server=’serverontest’,provider="sqloledb’,srvproduct="’,datasrc="101、123、10、112'

 (2)添加登录方式 EXEC sp_addlinkedsrvlogin rmtsrvname = "serverontest’, useself = ’false', locallogin = "sa", rmtuser = 'sa’, rmtpassword = "passwordofsa’ (3)以上两个语句中,server 为服务器得别名,datasrc为要链接得目标数据库得连接串,rmtsrvname 为别名,locallogin为本地登录得用户名,rmtuser 与rmtpassword为要链接得目标数据库得登录用户名与密码。

 (4)添加完链接服务器之后,可以通过 select * from sys、linked_logins 与 select * from sys、servers 来查瞧已经添加得链接服务器与登录角色。

 (5)添加完链接服务器后,使用 select * from 别名、库名、dbo、表名 来对其中得数据进行查询。

 (6)删除链接服务器登录映射与链接服务器得方法:

  exec sp_droplinkedsrvlogin "serverontest’ ,"sa’

 exec sp_dropserver "serverontest’

  思想以及设计理念:

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

  2 、在 UI 层( 用户操作界面),如果出错了, 或者操作失败了, 应该提醒用户下一步应该做什么. 如:当用户进行操作 B 得时候,需要先开启选项 A。设当前选项 A 为关闭状态,用户进行操作 B,此时应提示:“操作失败,选项 A 未启用,请到 XXX 设置中开启选项A"。在某些应用中,甚至可以增加直接跳转到设置得地方,或者直接修改设置。根据需要而定。

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

  3 、当可以确定两份程序完全一致,但就是怎么运行结果都不一致,先检查配置文件就是否不同。

  4 、如何查瞧进程得端口号. 命令行输入:netstat —ano 5 、如何使用命令行安装 Win dows 服务 %SystemRoot%\Microsoft、NET\Framework\v2、0、50727\installutil、exe E:\myService\ServiceTest、exe

 Net Start ServiceTest sc config ServiceTest start= auto 前提就是,您所要安装得服务,所在路径不能包含空格.如常见得 Program Files,就会造成安装失败. 如果安装得时候,命令行窗口一闪而过没有瞧到什么情况,可以自行在命令提示符里面执行以上得脚本以查瞧报错。或者在结尾加上 pause

  P S:一个一直支撑我得宝贵经验:

 哈佛有一个著名得理论:人得差别在于业余时间,而一个人得命运决定于晚上8点到 10 点之间。每晚抽出 2 个小时得时间用来阅读、进修、思考或参加有意得演讲、讨论,您会发现,您得人生正在发生改变,坚持数年之后,成功会向您招手。