
.Net
danjiewu
我们追逐成功,其实追逐的是成功带来的快乐,而非成功本身
展开
-
对象与Xml的相互转化
.Net中的XmlSerializer非常好用,但是有时候也不能完全满足要求。比如XmlSerializer完全按照对象内容展开,而不管引用关系,造成在反序列化后对象结构和原始的会不一致,如果循环引用还会出现死循环;需要显式制定对象中所有的自定义类型,不够方便;不支持范型,不能用接口作为变量类型等等。 自己写了一段程序,某些时候用起来比较方便,也为了熟悉一下Xml操作。很久以前写原创 2008-09-09 14:41:00 · 696 阅读 · 0 评论 -
Webform自定义分页控件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web; using System.Web.UI; namespace System.Web.UI.WebControls { [System原创 2009-12-18 11:13:00 · 1842 阅读 · 0 评论 -
Winform下的消息通知
类似QQ的弹出消息框,可以显示任意Form。不过最好不要给Form使用布局,FormBorderStyle也要设成None,否则显示效果就不理想了。参考TaskbarNotifier写的,觉得TaskbarNotifier使用起来太麻烦,改成静态类的方式。使用了PInvoke,否则不可避免的会出现闪烁或者无法不获取焦点。 public interface INofityForm原创 2010-01-11 12:20:00 · 5553 阅读 · 3 评论 -
小工具:DataGridView内容导出到Excel文件
一小段代码,很实用使用了开源类库MyXls public static void ExportToXlsFile(DataGridView dataGridView, string path) { XlsDocument doc = new XlsDocument(); Workbook workbook = doc原创 2009-12-18 10:58:00 · 1060 阅读 · 2 评论 -
Excel导入到DataGridView
public static int ImportFromXlsFile(DataGridView dataGridView, string path, string sheetName) { string sConnectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0原创 2010-01-26 10:41:00 · 2844 阅读 · 1 评论 -
SmtpClient的一个bug
看到有人在问有关SmtpClient的问题,突然想起以前发现的SmtpClient的一个bug,似乎在网上也没搜到过。System.Net.Mail.SmtpClient是.Net2.0自带的smtp邮件类,相信很多人在用SmtpClient的时候会遇到过“System.FormatException: 在邮件标头中找到无效的字符”这个异常。这个异常很多情况下都会发生,从提示信息看是邮件地址、原创 2008-11-15 23:23:00 · 1585 阅读 · 0 评论 -
实现C/S程序的自动更新
最近在做一个.Net C/S的系统,需要实现自动更新。MS已经提供了ClickOnce,很方便,但是用起来不太习惯,还是决定自己写一个简单的。自动更新无非文件比较、下载、启动程序几个步骤,其中文件比较可以通过手动在配置文件中维护版本号,也可以比较文件的MD5值,或者在.Net里还可以用Assembly或文件的版本号。因为怕麻烦,手动维护不考虑,剩下两者各有所长,都提供了以供选择。下载就比较简单原创 2008-10-29 15:42:00 · 10423 阅读 · 2 评论 -
MyORM的使用(三)
在Web项目中MS提供了ObjectDataSource,利用它配合MyOrm可以方便的实现分页、排序等。简单说一下ObjectDataSource,这个东东感觉多少有点变扭。首先它需要指定一个BusinessObject,通过给Select、Update、Insert等操作指定BusinessObject中对应的方法,页面的操作通过反射调用对应的方法。这里MS提供了DataObjectAtt原创 2008-10-23 10:44:00 · 984 阅读 · 0 评论 -
自己动手打造ORM(二) —元数据
ORM既然是实体与关系数据库的映射,那就需要建立实体和关系数据库之间的基础数据,也可以称为元数据。简单的说就是表示类与表、列与属性(get、set方法)等等之间对应关系的数据。 ColumnInfo的ColumnMode是为了区分读写操作,ForeignTable是在查询时使用的。另外GetValue和SetValue用到了CodeProject上的FastInvoke,为了提原创 2008-10-07 12:50:00 · 1660 阅读 · 0 评论 -
自己动手打造ORM(一)
为什么要重复发明轮子?Hibernate,IBatis等等已经很成熟的框架还不够吗?我的看法,一是这些ORM框架过于复杂了,虽然很多是号称轻量级的,但面对一大堆配置,一大堆类库,一大堆提出的概念,或许你会想,这就是我要的ORM吗?也许大部分只是需要SQL和对象之间方便的转化。二是ORM框架会强加给你很多东西,比如LazyLoad、缓存、事务,这些是有用,但是未必是你想要的,这对于设计是很不利的原创 2008-10-07 03:10:00 · 1710 阅读 · 0 评论 -
自己动手打造ORM(五) —实现
最后,是ORM的实现,或者说,只是生成SQL和读取数据转化为对象而已。默认是按照MS SqlServer的语法,如果是其他数据库改一下ToSqlName和ToSqlParam方法就可以,也许还有些地方需要修改(我记得SqlCe似乎是不支持as关键字的)。 一个简单的ORM基本完成了,甚至可以说是简陋,连最基本的数据库打开关闭功能都没有……开发它的目的只有一个:简化数据库操作原创 2008-10-07 17:34:00 · 1131 阅读 · 0 评论 -
自己动手打造ORM(四) —需求
有了元数据之后,就可以实现ORM的功能了。不过在实现之前,还要考虑一下ORM的要实现的功能是什么? ORM的最终功能不外乎增删改查,其中前三者是容易实现的,而查询却非常麻烦。因为SQL的查询非常灵活,想要用面向对象的方式表示不太可能。 在Hibernate中,用HQL来实现查询,个人认为这是一个很不好的做法。HQL并不比SQL简单多少,而且最终还是会转化为SQL语句,那原创 2008-10-07 14:09:00 · 1202 阅读 · 0 评论 -
自己动手打造ORM(三) —自定义Attribute
元数据的定义已经有了,下面要考虑的问题是从哪里生成元数据。硬编码来实现当然也可以,但这种体力劳动显然不是大多数人所希望的。使用配置文件是一个可行的方法,而在.Net里用Attribute更方便一些,正好适合要求。 根据ORM的元数据定义对应的Attribute:TableAttribute,ColumnAttribute,TableJoinAttribute。其中Colum原创 2008-10-07 13:32:00 · 1297 阅读 · 0 评论 -
MyORM的使用(一)
之前把自己写过的一个简单ORM类库介绍了下,考虑到代码会有改动而blog中编辑代码太麻烦,在CodePlex上建了一个项目:MyORM,相关代码和文件维护起来方便不少。CodePlex下载地址http://www.codeplex.com/MyOrm/Release/ProjectReleases.aspx?ReleaseId=18323,包含了源码、一个Sample工程和CodeSmith原创 2008-10-14 21:43:00 · 1489 阅读 · 0 评论 -
MyORM的使用(二)
SimpleCondition与ConditionSet查询是最常用的数据库操作,最普通的查询条件一般是某个字段满足某个条件,这类查询可能超过了一半。因此MyOrm里定义了SimpleCondition和ConditionSet两个Condition类型。SimpleCondition的定义非常简单:名称、用于比较的操作符、值。为操作符定义了ConditionOperator的枚原创 2008-10-15 17:28:00 · 1199 阅读 · 0 评论 -
使用NPOI导出数据到Excel
public static class XlsExport { public static void ExportTo(DataTable table, Stream stream) { using (HSSFWorkbook workbook = new HSSFWorkbook()) {原创 2012-02-03 10:58:40 · 1618 阅读 · 2 评论