Fork me on GitHub

03 2012 档案

摘要:昨天宿舍没电,终于有耐心花了两个小时完整写了一个简易的代码生成器,要去上课了,就随便说一下1.运行环境 : WIN7+.NET4.0+msSQLSEVER20082.生成代码模式: 三层中的两层 DAL+BLL 外加一个模型model3.主要组成: 自己封装的一个SMO 数据库操作辅助类+耐心拼接字符串4.缺陷:对SQL字符类型的转换只是列举了一部分,需要后期按照需要扩充5.运行步骤:检索局域网内所有的SQL服务器-------》选择服务器----------》选择身份验证--------》加载数据库文件-------》--------》选择数据库名---------------》列遍历所选数 阅读全文
posted @ 2012-03-30 10:13 Halower 阅读(852) 评论(0) 推荐(3) 编辑
摘要:C# 如何获取本地数据库SQL Server2008的数据库服务器名称和数据库名称?不知道为什么我的Win7就是注册不了sqldmo.dll,经过学习,基本可以自己使用SMO解决这些问题。我在百度中找到了这个问题的答案,不过不知道为什么我的Win7就是注册不了sqldmo.dll,因此无法引用SQL Distributed Management Objects。问题关键是我安装的是SQL2008EXPRESS版本没有安装SQL2000的企业版附带不了这个COM组件,也不想安装2000,解决不了问题很纠结。因此我就看了下MSDN,里面说SQLDMO已经被SMO取代了,所以附带的看了下,SMO,太 阅读全文
posted @ 2012-03-28 14:26 Halower 阅读(1457) 评论(0) 推荐(0) 编辑
摘要:我主要以三层模式为基础,安装昨天的代码加以修改,来完成自己的通用的代码生成器,由于是初学而且专业课占去了大部分的时间,只是尝试的写点功能,还需要来熟悉下IO下的一些类,所以这里写的只是为了作为练习作为以后的复习方便而已,灰常不完善,慢慢改进,通过学习代码生成器和三层模式的结构,如果我要在这两者学习间找到着力点,重点是在三层模式,不过基本还是要依托于对ADO.NET实现机制的熟悉程度。如果熟悉了这两者,代码生成器完全是数据拼接字符串的操作,没有了技术含量。 现在的专业的代码生成器很多,作为新手就因该从基础学习,而不是直接使用CodeSmith、动软这样的企业用的代码生成器,不要心急,从... 阅读全文
posted @ 2012-03-27 18:39 Halower 阅读(2834) 评论(6) 推荐(6) 编辑
摘要:复杂项目不能把SQL语句直接写到程序里,不模块化、难以维护,应该采用三层架构。Web开发中的三层架构也是同样的结构。 模型层Model;数据访问层DAL(Data Access Layer);业务逻辑层BLL(business logic layer )。实体类就是Model;对数据进行操作的代码写在DAL中,一般就是SQL语句,DAL只有对数据的操作;BLL调用DAL中的代码进行逻辑操作SQL语句一般只应该出现在DAL中。 三层:UI(界面,User Interface)、BLL、DAL。Model是在三层之间进行数据传递的。UI层调用BLL、BLL调用DAL,数据用Model传递,UI不. 阅读全文
posted @ 2012-03-26 22:56 Halower 阅读(1753) 评论(2) 推荐(5) 编辑
摘要:今日学习了一个利用GDI画图的小例子,算是为以后深入学习GDI做个小铺垫。using System;using System.Drawing;using System.Windows.Forms;using System.Drawing.Drawing2D;namespace GDI_{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private PointF PointF(int ... 阅读全文
posted @ 2012-03-16 14:20 Halower 阅读(958) 评论(0) 推荐(5) 编辑
摘要:我们在使用Main()方法的时候有没有注意过入口参数args的传入传出的值是什么呢?或许这个问题小的都没人注意。刚刚使用IO命名空间下的,Enveriment.Environment.GetCommandLineArgs();获取观察了一下,就会发现,这里的args参数我们是可以自己修改,也可以由程序返回,同时也可以执行前使用cmd方式传入,也可以固定的方式输入,方法很多,我是菜鸟刚学也就发现了这么一点点,博客园的高手们就是好啊,对我这样的超级大菜鸟还是很包容的,有问题大家就帮帮我,目前主攻文学,哲学,神学,但是遇到程序的问题周围没人学这个,只能一个人解决,问题很多啊,大家可以给我指导一下。好 阅读全文
posted @ 2012-03-14 00:27 Halower 阅读(11189) 评论(47) 推荐(6) 编辑
摘要:这几日没时间学习程序,老师都安排我去听马克思哲学了,闲暇时间还要陪老婆聊天,今天算是学习文件操作的第一天,也就抽时间写个笔记,感觉.NET的IO命名空间下的文件操作类型是目前我遇到的几种语言中最丰富和简洁的所以很好学习,先画个文件类框架呗。任何编程语言操作文件都要调用操作系统的应用程序接口来实现,.NET框架提供了功能强大的统一的应用程序接口,在System.IO命名空间下,定义了多种文件管理,文件和数据流读写的类型。废话也就不多说了,我们来看下我参考微软的官方实例写的例子using System;using System.IO;namespace 文件操作{ class Test ... 阅读全文
posted @ 2012-03-12 22:33 Halower 阅读(4372) 评论(15) 推荐(5) 编辑
摘要:前言前几日同学告诉我他老师告诉他,泛型是定义一种通用的方法,至于为什么用泛型他的答案还是定义一种通用的方法,当时我也没有学,还不懂啦,毕竟人家是计算机专业的科班生,我当然没有发言权,只是怀疑的记下了这个错误的结论打算以后看看是不是对的,这两天算是把泛型学了一下,其实它定义的不只是方法,自己感觉他就是一种规范代码执行效率的模版,这样极不容易出错,并把我们常用的箱拆箱操作过程给省了,提高了编译器的执行效率,。至于为什么用泛型这个我貌似已经说明白了,泛型多用于集合类操作,我在这里随意的拿出C#定义的ArrayList的Add方法的定义我们一起看看:publicvirtualintAdd(Object 阅读全文
posted @ 2012-03-08 09:59 Halower 阅读(970) 评论(0) 推荐(2) 编辑
摘要:在许多情况下,重载运算符允许生成可读性更高、更直观.我认为即便是你学什么语言的编程你都在有意无意的接触过编译器预定义的运算符重载只是没有那个概念罢了,下面是我在学习过程中的总结。运算符的工作方式 :为了理解运算符是如何重载的,我先了解一下编译器遇到运算符时会做怎么的处理,我们用相加运算符+作为例子来讲解。假定编译器遇到下面的代码:int a = 1;uint b = 2;double c = 3.0;long l = a + b;double d = a+c;long l = a + b;编译器知道它需要把两个整数加起来,并把结果赋予long。调用一个方法把数字加在一起时,表达式a+b是一种非 阅读全文
posted @ 2012-03-08 09:23 Halower 阅读(1929) 评论(2) 推荐(2) 编辑
摘要:T-SQL中的11个流程控制语句关键字 在T-SQL中,与流程控制语句相关的关键字有11个:BEGIN...ENDBREAKGOTOCONTINUEIF...ELSEWHILERETURNWAITFORCASLERAISEERROR和PRINTBEGIN…END关键字BEGIN…END也是流程控制语句需要用到的最基本关键字,用于将多个语句划分成逻辑上的一部分。其实可以直接理解成Delphi的begin...end 或者C类语言的{},用于按块(block)顺次执行多条语句。IF..ELSE关键字IF..ELSE关键字实现了非此既彼的逻辑。和高级语言中的IF..ELSE具有完全一样的使用方法,这 阅读全文
posted @ 2012-03-07 22:41 Halower 阅读(1547) 评论(0) 推荐(0) 编辑
摘要:对于抽象类,只需要将它看成一种其他类实现某些功能的模版,例如我们定义一个事物模版,那么它有身高,体重,语言,国籍,语言......这样的一系列的特征我们知道他应该描述的是一个人,只要我们将这些特性一一赋值,就能知道这个事物的具体存在。因此我们不能实例化这个模版(不能使用new关键字),他不代表任何一个现实的存在,只是为利用它而进行实例化的实例提供了若干接口,因为他是模版所以不能私有化,即不能使用private关键字。同时抽象方法隐含为virtual方法,以重写(override)的方式达到实例化的目的,但是不能使用virtual关键字。 在对抽象类测试的过程中,我发现了如下特性:1.抽象类.. 阅读全文
posted @ 2012-03-07 20:30 Halower 阅读(453) 评论(0) 推荐(0) 编辑
摘要:认识触发器:触发器是一种特殊的存储过程,它不能被显示的调用,而是在往表中插入记录,更改记录或者删除记录时,被自动激活。在触发器中可以查询其他表,也可以执行更复杂的T-SQL语句。如果执行的T-SQL语句执行了一个非法操作,则可以通过回滚事务使语句不能执行,并返回到事务执行前的状态,Microsoft SQL Server 允许为任何给定的 INSERT、UPDATE 或 DELETE 语句创建多个触发器。触发器的作用:◎触发器可以对数据库进行级联修改◎触发器可以完成比CKECK约束更复杂的限制◎触发器可以发现改变前后表中数据的不同,并根据这些不同来进行相应的操作。◎对于一个表上的不同操作(IN 阅读全文
posted @ 2012-03-07 20:29 Halower 阅读(937) 评论(1) 推荐(4) 编辑
摘要:原理:当需要在内部类的内部访问外部类实例时,可以将代表外部类的实例的this关键字作为一个参数传递给内部类,这样就可以实现在内部类的内部访问外部类实例,其实质还是在内部类中用外部类的实例去访问自身的方法而已。如下我写的实例主要是看卡这种效果,可以参考一下: using System;namespace TestinerClass{ class OutClass { string name = "外部类实例字段"; public void display() { Console.WriteLine("调用外部实例方法!... 阅读全文
posted @ 2012-03-07 20:29 Halower 阅读(3346) 评论(0) 推荐(0) 编辑
摘要:它与this关键字一样,都是作为类的实例(因此不能调用基类的静态成员和抽象成员)简写或者替代而存在的,只不过this关键字用于替代本类的实例,base关键字用于替代基类的实例,用法很简单,其访问基类的形式如下:base.【标识符】 base[【表达式列表】] 这个类型的一看便可以大概猜测多用于基类实例的索引器操作,在我下面演示的代码中你会看到它的用法。对于 base.【标识符】的访问形式再次说明一下:对于非虚方法,这种访问仅仅是对基类实例成员的直接访问,完全等价于((base)this).【标识符】。对于虚方法,对于这种访子类重写该虚方法运用这种访问形式也是(禁用了虚方法调用的机制)对基类实. 阅读全文
posted @ 2012-03-07 20:21 Halower 阅读(513) 评论(0) 推荐(0) 编辑
摘要:密封类就是将一个类封闭起来,断其子孙的一种方式。书面点说,就是从所修饰的类派生出其他类,所以一个密封类是没有也不能继承的类,因此sealed关键字和abstract关键字不能同时使用。 密封方法则不是为了防止继承而是防止重写,而且它是为了重写基类的虚方法并提供具体的实现,同时防止其后继类(派生类)再次重写该虚方法因此在密封方法中sealed关键字总是和override关键字同时使用。这些都很简单但是代码总结起来还是不够直观,必须实际感受下: 1 using System; 2 3 namespace SealClassTest 4 { 5 public sealed class S... 阅读全文
posted @ 2012-03-07 20:21 Halower 阅读(3209) 评论(0) 推荐(0) 编辑
摘要:一.隐式转换从任何引用类型到object。从任何类A到其基类B(或着后续基类),也即A派生自B。从任何实现I接口的类A到接口I.从任何接口I1到其基接口I2(或着后续基接口)。 二.显式转换从object到任何其它引用类型。从基类B到其子类A.从任何类A到任何接口I(类A不能被密封,A不实现接口I)从任何接口I到任何类B(类B实现接口I,切不密封)从任何接口I2到任何接口I1(前提是接口I2不是I1派生的) 测试代码如下:using System;namespace ConvertClass{ interface IDatabase { void Query(); } interface IF 阅读全文
posted @ 2012-03-07 20:20 Halower 阅读(749) 评论(0) 推荐(0) 编辑
摘要:类可以看做是创建一组对象的模版,类似的接口可以看做创建一组类的模版。一个类可以实现多个接口,从而实现多重继承。接口使得服务协议与实现相分离,是组件编程的基础,是组件向外公布其功能的唯一方法。 接口的设计原则是:一旦发布一个接口就不能再更改它,但是可以通过继承扩展新的接口。接口成员的特点(以下在学习中的总结):1.接口成员都是public类型的,但是不能使用public修饰符。2.接口成员的声明不能包含new之外的其他任何修饰符。3.接口不能包含常量,字段,运算符,静态成员(这些与抽象方法不同),实例构造函数,析构函数或类型。4.接口修饰符只允许使用new,public,protected,i. 阅读全文
posted @ 2012-03-07 20:20 Halower 阅读(607) 评论(0) 推荐(0) 编辑
摘要:异常类型的类别基类 Exception 下存在两类异常:从 SystemException派生的预定义公共语言运行库异常类。从 ApplicationException派生的用户定义的应用程序异常类。Exception 包含很多属性,可以帮助标识异常的代码位置、类型、帮助文件和原因:StackTrace、InnerException、Message、HelpLink、HResult、Source、TargetSite 和 Data。 以下我开始对这几个属性开始测试代码演示如下: Code 1 using System; 2 3 namespace Uer_Test 4 { 5 cl... 阅读全文
posted @ 2012-03-07 20:19 Halower 阅读(1822) 评论(0) 推荐(0) 编辑
摘要:as 运算符类似于强制转换操作。但是,如果无法进行转换,则 as 返回 null 而非引发异常。as 运算符只执行引用转换和装箱转换。as 运算符无法执行其他转换,如用户定义的转换,这类转换应使用强制转换表达式来执行。expression as type等效于(但只计算一次 expression)expression is type ? (type)expression : (type)nullas 运算符用于在兼容的引用类型之间执行转换。例如:// cs_keyword_as.cs// The as operator.using System;class Class1{}class Clas 阅读全文
posted @ 2012-03-07 20:19 Halower 阅读(657) 评论(0) 推荐(0) 编辑
摘要:1.拆分字符串 1.1 以下例举一个拆分句子的demo:using System;using System.Text.RegularExpressions;namespace RegexSplit{class Program{ public static void Main(string[] args) { Console.WriteLine("请输入要分拆的字符串,并按Enter键确认。"); string input=Console.ReadLine(); string pattern=@"\.|,|:|;|。|,|:|;"; string[] rs 阅读全文
posted @ 2012-03-07 20:18 Halower 阅读(456) 评论(0) 推荐(1) 编辑
摘要:边关魂不尽风霜无限度,断崖红云鹤边飞。紫日红缨军家鼓,大喝一声入关去。 阅读全文
posted @ 2012-03-07 20:18 Halower 阅读(265) 评论(0) 推荐(0) 编辑
摘要:这两天太懒了昨晚又通宵玩了一夜游戏今天补睡了一天,所以进度慢了点,不过也没啥,每天进步一点点就行了,哈哈。我在前面介绍了数组,有些网友问我咋把数组放到集合里讨论,其实数组就是我们最常用的一种集合,所有的数组都是从System.Array类继承下来的,今天其实主要的内容是集合构造的效率问题,也就是我今天的主题----扩容。今天只以ArrayList为例,但是它适用与所有的集合(当然包括数组)。书面一点说就是System.Collections命名空间中的所有集合在到达当前的容量时都会自动扩容,内存被重新分配,元素从旧的集合复制到新的集合,这虽然减小了所需代码,但是集合的性能会有所降低,避免这种. 阅读全文
posted @ 2012-03-07 20:17 Halower 阅读(358) 评论(0) 推荐(0) 编辑
摘要:这几日太忙了,复习专业课,忙了几日其实也没认真看书,呵呵,下面再说一下事件,这个便是只要你真正理解了这个也就是委托的一种特例,是一种特殊的委托类型(也可以看作一个字段但是依旧返回的是委托类型,为什么呢,因为即便是stringstr ,str依旧是一个string类型 的参数),这个只要自己理解就不难了,问人根本解决不了问题和疑惑,昨日开始看时问了几个开发了几年的程序员一个问题,他们也是回答摸棱两可,最后没办法还是自己搞定了。由于马上要上课去了,我只能在中午画了一个思维图和写的一个Demo给大家看一下我的思路,如有不同见解可以留言以便讨论。示例如下:using System;namespac.. 阅读全文
posted @ 2012-03-07 20:17 Halower 阅读(1269) 评论(3) 推荐(1) 编辑

点击右上角即可分享
微信分享提示