随笔-15  评论-90  文章-0  trackbacks-9
  2008年9月15日

在Windows Xp pro上安装SQL Server 2005 dev版遇到下面的问题

TITLE: Microsoft SQL Server Setup
------------------------------

SQL Server Setup failed to obtain system account information for the ASPNET account. To proceed, reinstall the .NET Framework, and then run SQL Server Setup again.

For help, click: http://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft+SQL+Server&ProdVer=9.00.1399.06&EvtSrc=setup.rll&EvtID=SQLSetup90&EvtType=28126

------------------------------
BUTTONS:

OK
------------------------------

 

解决方法:

运行 aspnet_regiis.exe -i 重新安装asp.net

 

OK。

posted @ 2008-09-15 21:27 峻祁连 阅读(19) | 评论 (0)编辑
  2008年9月12日

先说个问题:

看这样一个很简单的存储过程,接收有一个text类型的参数。

 

Code

 

在SQL 中调用

 

Code

 

大家知道,在SQL Server 2000中,VARCHAR的最大长度是8000,如果字符串的长度超过8000,保存在VARCHAR中时就会被截断。如果你需要传入的参数恰好很长,比如是一个xml,很多时候都会超过8000个字符。那怎么办呢?

DECLARE @largeText TEXT 是不行的,那我们怎么办呢?

在SQL Server 2000中,这的确是个很棘手的问题。不过幸运的是SQL Server 2005为我们提供了VARCHAR(MAX),它的最大长度可以达到2G,足够用了:)。而且,我们原先熟悉的字符串处理函数REPLACE,LTRIM等等也可以用了,多完美啊,呵呵

VARCHAR(MAX), NVARCHAR(MAX)和VARBINARY(MAX)是SQL Server 2005中引进的,可以作为TEXT, NTEXT和IMAGE的替代。

做个试验:

 

Code

LengthOfSmallVarChar

--------------------

8000

 

Code

LengthOfMaxVarChar

--------------------

8001

 

嗯,上面存储过程的难题也迎刃而解了:

 

Code

 

Perfect!!

 

不过还有一点是要注意的,VARCHAR和VARCHAR(MAX)混在一起做处理时还是会变成VARCHAR,从而可能被截断,所以需要全转成VARCHAR(MAX)

比如:

 

Code

 

结果会是怎么样呢?其实还是8000,但如果改成declare @str1 varchar(max)就对了。

 

 

 

posted @ 2008-09-12 23:05 峻祁连 阅读(1453) | 评论 (5)编辑
  2008年8月19日

 

注意到 CollectionBase.InnerList属性,这是一个protected 属性,得到一个包含了CollectionBase中的元素的ArrayList。

所以可以调用ArrayList.Sort()来实现排序。

 

using System;

 

public class Person {

      public Person(string name, int age) {

            this.Name = name;

            this.Age = age;

      }

      public string Name;

      public int Age;

}

 

public class People : System.Collections.CollectionBase {

      public int Add(Person p) {

            return List.Add(p);

      }

 

      public void SortByName() {

            System.Collections.IComparer sorter = new NameSortHelper();

            InnerList.Sort(sorter);

      }

      public void SortByAge() {

            System.Collections.IComparer sorter = new AgeSortHelper();

            InnerList.Sort(sorter);

      }

 

      private class NameSortHelper : System.Collections.IComparer {

            public int Compare(object x, object y) {

                  Person p1 = (Person) x;

                  Person p2 = (Person) y;

                  return p1.Name.CompareTo(p2.Name);

            }

      }

 

      private class AgeSortHelper : System.Collections.IComparer {

            public int Compare(object x, object y) {

                  Person p1 = (Person) x;

                  Person p2 = (Person) y;

                  if(p1.Age > p2.Age)

                        return 1;

                  if(p1.Age < p2.Age)

                        return -1;

                  return 0;

            }

      }

}

 

 

class App {

      [STAThread]

      static void Main(string[] args) {

            People people = new People();

            people.Add(new Person("John" , 30));

            people.Add(new Person("Bob" , 20));

            people.Add(new Person("Zeke" , 18));

           

            //people.SortByAge();

            people.SortByName();

 

            foreach(Person p in people) {

                  Console.WriteLine("{0} , {1}", p.Name, p.Age);

            }

      }

}

 

 

http://unboxedsolutions.com/sean/archive/2004/08/10/292.aspx

posted @ 2008-08-19 14:50 峻祁连 阅读(54) | 评论 (0)编辑
  2008年8月12日
SQL Server 2008 and Visual Studio 2008 Service Pack 1 Available for Download

SQL Server 2008 has been released and is ready to deliver a rich set of integrated services that enable you to do more with your data, such as query, search, synchronize, report, and analyze. MSDN subscribers can find RTM versions now available for download. Visual Studio 2008 Service Pack 1 offers VS 2008 and .NET Framework 3.5 users improvements in responsiveness, stability, and performance. Visual Studio 2008 Service Pack 1 and .NET Framework 3.5 Service Pack 1 downloads are now available to MSDN subscribers. SQL Server 2008 evaluation versions are available for free download as are free downloads of SQL Server 2008 Express and SQL Server Compact editions.
posted @ 2008-08-12 16:22 峻祁连 阅读(93) | 评论 (1)编辑
  2008年7月23日

项目源代码管理用TFS,安装VS2005 SDK后发现每次打开解决方案,做build时都会提示签出项目文件,结果要把解决方案下的n多csproj文件都签出才行。

虽然也没什么大碍,可是在checkin代码的时候可累死了,本来可能之更改了一两个文件,却要从几十个Pending的文件中找出来,实在是很重的负担。

我根本不需要该其他的csproj,为什么他们总是会被自动更改,从而要求签出呢?

compare了一下csproj文件,才发现,每次打开解决方案,csproj文件中都会自动增加了下面的代码:

    <ItemGroup>
         <Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" />
    </ItemGroup>

 

放狗搜了半天,才发现原来这是VS2005 SDK的一个bug,由于DSL (domain-specific language)引起的。害苦我了。

解决办法如下:

注册表中查找{B4F97281-0DBD-4835-9ED8-7DFB966E87FF},删除!

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{a9696de6-e209-414d-bbec-a0506fb0e924}, 删除!

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\Packages\{a9696de6-e209-414d-bbec-a0506fb0e924}, 删除!

 

OK,现在清爽多了!

参考连接:

http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework/topic61709.aspx

http://forums.msdn.microsoft.com/en-US/vsx/thread/aba82b76-2d7c-4de8-9f61-19938976bdbd/

posted @ 2008-07-23 21:39 峻祁连 阅读(1169) | 评论 (9)编辑
  2008年5月18日

 

现在抢救被困者的生命还是第一位的,
现在各媒体还都在报道抢救过程,这很好
灾区的人民也还来不及回想当初的惨烈情形,

但随着时间会一天一天过去后,
灾后重建工作也会逐渐展开,
在媒体报道抢救生命的高潮过去后,
很可能又会迎来一个各媒体争相采访幸存者的高潮,
很可能这样那样的谈话节目会把获救者请到这样那样的演播室,
一次又一次的让他们讲述他们被掩埋在废墟中的那段经历
那段不堪回首的经历,
一次又一次的揭开他们的伤疤,
一次又一次的引诱他们的眼泪,来博取观众更多的眼泪,

我们固然希望能够了解幸存者在废墟中等待救援时心里在想些什么,
然而,这样的谈话节目,
一次又一次的让他们讲述他们不愿也不敢想起的事,
对他们难道不是又一次的摧残么?

所以,希望我们现在就开始呼吁,
呼吁各媒体,
不要进行这样的谈话类采访,
就让他们安安静静的,
不要再一次又一次的揭开伤疤,
不要一次次的揭开他们的伤疤,
一次又一次的引诱他们的眼泪,来博取观众更多的眼泪,

请大家尽可能转载或转发,
提请各媒体注意。

 

 

请原谅我暂时放首页。                                                         

posted @ 2008-05-18 19:25 峻祁连 阅读(1672) | 评论 (22)编辑
  2008年4月9日


 
前几天写了个小插件,发了个bog,说要把过程写出来,今天来个看图说话吧。


 

1、使用VS2005。创建新项目,选择Visual Studio 外接程序模版。

  1

2、VS2005会启动外接程序向导

2

3、选择语言C#

3

4、选择应用主机

 4

5、起个名字

 5

6、选择界面,第一项打勾,向导会帮我们生成在“工具”菜单下增加我们自定义的子菜单的代码

 6

7、关于对话框,要不要两可

 7

8、到此完成

 8

 

向导运行完毕,VS2005自动添加了一系列文件,最主要的就是Connect.cs,我们的自定义代码都要写在这个文件中。另外还有一个资源文件,在查找菜单项时使用,从而可以增加多语言支持。

 9

 

下面是主要代码,请注意其中的黑体部分。

 

 

        public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
        {
            _applicationObject = (DTE2)application;
            _addInInstance = (AddIn)addInInst;
            if(connectMode == ext_ConnectMode.ext_cm_UISetup)
            {
                object []contextGUIDS = new object[] { };
                Commands2 commands = (Commands2)_applicationObject.Commands;
                string toolsMenuName;

                try
                {
                    //若要将此命令移动到另一个菜单,则将“工具”一词更改为此菜单的英文版。
                    //  此代码将获取区域性,将其追加到菜单名中,然后将此命令添加到该菜单中。
                    //  您会在此文件中看到全部顶级菜单的列表
                    //  CommandBar.resx.
                    ResourceManager resourceManager = new ResourceManager("CodeFormater.CommandBar", Assembly.GetExecutingAssembly());
                    CultureInfo cultureInfo = new System.Globalization.CultureInfo(_applicationObject.LocaleID);
                    //注意这里要做一下修改,VS2005向导生成的代码有点小问题
                    //这是根据CultureInfo在资源文件中查找"工具"菜单的名称.
                    //注意到CommandBar.resx资源文件中,我们采用的中文版vs2005,"工具"对应的名称是"zh-CHSTools"

                    10

                    string resourceName;
                    if (cultureInfo.TwoLetterISOLanguageName == "zh")
                    {
                        resourceName = String.Concat(cultureInfo.TwoLetterISOLanguageName, "-", cultureInfo.ThreeLetterWindowsLanguageName, "Tools");
                    }
                    else
                    {
                        resourceName = String.Concat(cultureInfo.TwoLetterISOLanguageName, "Tools");
                    }
                    toolsMenuName = resourceManager.GetString(resourceName);

                }
                catch
                {
                    //我们试图查找“工具”一词的本地化版本,但未能找到。
                    //  默认值为 en-US 单词,该值可能适用于当前区域性。
                    toolsMenuName = "Tools";
                }

                //将此命令置于“工具”菜单上。
                //查找 MenuBar 命令栏,该命令栏是容纳所有主菜单项的顶级命令栏:
                Microsoft.VisualStudio.CommandBars.CommandBar menuBarCommandBar = ((Microsoft.VisualStudio.CommandBars.CommandBars)_applicationObject.CommandBars)["MenuBar"];

                //在 MenuBar 命令栏上查找“工具”命令栏:
                CommandBarControl toolsControl = menuBarCommandBar.Controls[toolsMenuName];
                CommandBarPopup toolsPopup = (CommandBarPopup)toolsControl;

                //如果希望添加多个由您的外接程序处理的命令,可以重复此 try/catch 块,
                //  只需确保更新 QueryStatus/Exec 方法,使其包含新的命令名。
                try
                {
                    //将一个命令添加到 Commands 集合:
                    Command command = commands.AddNamedCommand2(_addInInstance, "CodeFormater", "CodeFormater", "格式化选中代码的格式", true, 59, ref contextGUIDS, (int)vsCommandStatus.vsCommandStatusSupported+(int)vsCommandStatus.vsCommandStatusEnabled, (int)vsCommandStyle.vsCommandStylePictAndText, vsCommandControlType.vsCommandControlTypeButton);

                    //将对应于该命令的控件添加到“工具”菜单:
                    if((command != null) && (toolsPopup != null))
                    {
                        command.AddControl(toolsPopup.CommandBar, 1);
                    }
                }
                catch(System.ArgumentException)
                {
                    //如果出现此异常,原因很可能是由于具有该名称的命令
                    //  已存在。如果确实如此,则无需重新创建此命令,并且
                    //  可以放心忽略此异常。
                }
            }
        }

 

 

 

        /// <summary>实现 IDTCommandTarget 接口的 Exec 方法。此方法在调用该命令时调用。</summary>
        /// <param term='commandName'>要执行的命令的名称。</param>
        /// <param term='executeOption'>描述该命令应如何运行。</param>
        /// <param term='varIn'>从调用方传递到命令处理程序的参数。</param>
        /// <param term='varOut'>从命令处理程序传递到调用方的参数。</param>
        /// <param term='handled'>通知调用方此命令是否已被处理。</param>
        /// <seealso class='Exec' />
        public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)
        {
            handled = false;
            if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
            {
                if (commandName == "CodeFormater.Connect.CodeFormater")
                {

                    //在这里就可以实现自己的逻辑来扩展VS2005的功能了,这里我自己写了个很简单的类,来帮我处理代码对齐功能
                   
                    string selectedCode = ((TextSelection)_applicationObject.ActiveDocument.Selection).Text;
                    string outCode = CodeSmart.AlignText(selectedCode, "=");            //对齐选中文本中的"="
                    outCode = CodeSmart.AlignText(outCode, "//");                              //对齐选中文本中的"//"
                    ((TextSelection)_applicationObject.ActiveDocument.Selection).Insert(outCode, (int)vsInsertFlags.vsInsertFlagsCollapseToEnd);


                    handled = true;
                    return;
                }
            }
        }

 

编译,运行,你就会看到一个新的VS2005启动了,工具菜单下多了一个CodeFormate菜单,就这样,一个简单的VS2005插件就做好了。过程是这样,你还可以编写其他的逻辑来实现你自己想要的功能。

源代码下载:

CodeFormater_src.rar 45KB 0 2008/4/9 21:26:03 Download

插件下载:

CodeFormater.zip 10KB 154 2008/4/7 20:48:19 Download

 

posted @ 2008-04-09 21:25 峻祁连 阅读(2670) | 评论 (13)编辑
  2008年4月7日

为了代码看起来更整齐,就希望能把赋值等号和单行注释对齐,VS2005好像没有这个功能,干脆自己动手写一个算了。

注意事项:

适用于VS2005中文版,VS2008没有测试。VS2005英文版下貌似不能加载,好像是一个VS2005安装sp1后的bug吧,我还没搞清楚。

要使用等宽字体,比如新宋体。VS2005环境设置,字体选择框中显示为粗体的是等宽字体。

安装方法

Steps to Install CodeFormater Add-In for Visual Studio 2005
--------------------------------------------------------

1. Close all instances of Visual Studio 2005.

2. Copy the .addin and .dll files to your Addins directory (usually C:\Documents and Settings\[User]\My Documents\Visual Studio 2005\Addins).
   If you do not have an Addins directory, create it under your "Visual Studio 2005 "directory.

3. That's it. The next time you open Visual Studio 2005 the CodeFormater add-in will be available.

 

1。关闭所有的VS2005实例。

2。拷贝.addin 和.dll文件到Addins目录。通常是C:\Documents and Settings\[User]\My Documents\Visual Studio 2005\Addins

3。可以了,下次在运行VS2005,你就会发现“工具”下面多了两个“CodeFormater”和“InserDateTime”

 

使用方法:

选中要进行格式化的代码段,点“工具”--〉“CodeFormater”,即可。

tool

格式整理前:

before

 

格式整理后:

after

大家试用一下,有什么意见和建议,可以给我回复或留言。

以后会加上右键菜单功能,这个还没弄好:)并且会把编写过程写出来,呵呵


 下载:

CodeFormater.zip 10KB 0 2008/4/7 20:48:19 Download

源码下载:

CodeFormater_src.rar 45KB 0 2008/4/9 21:26:03 Download


制作过程:
http://www.cnblogs.com/junqilian/archive/2008/04/09/1145733.html
 

 

posted @ 2008-04-07 20:47 峻祁连 阅读(2364) | 评论 (20)编辑
  2008年3月17日


技能:
1. 面向对象编程思想 ;
2. c#,asp.net,javascript,HTML,XML,delphi
3. 常见GIS平台,包括 MapInfo/MapX , MapGuide Open Source/Enterprise
4. SQL Server,Oracle数据库的开发应用
5. 项目管理经验
6. 良好的英语交流能力
7. 一定的项目管理能力

 

项目经验:
1. 石化企业地理资源管理信息系统(asp.net + MapGuide Enterprise + SQL Server + VRML)   负责
2. 船舶监控管理信息系统(GPS) (asp.net + MapGuide Open Source + Oracle)  负责
3. 某卷烟厂公共信息发布系统( asp.net + Oracle) .负责
4. 某烟草物流中心配送GIS系统 (delphi + MapX + Oracle ). 部分负责.
5. 某卷烟厂虚拟现实管理信息系统(asp.net + Oracle + VRML) .部分负责.
6. 某企业文档资料管理信息系统(c# ,asp.net + SQL Server + Autodesk whip! viewer). 负责.
7. 区县烟草专卖局地理信息系统(delphi + MapX + SQL Server)  主要参与人

7年工作经验,算不算老家伙了,呵呵

email :junqilian@163.com 

或者给我留言,我给你发详细的简历。

posted @ 2008-03-17 18:13 峻祁连 阅读(311) | 评论 (3)编辑
  2008年3月14日

最近在看《Agile Principles,Patterns,and Practices in C#》, written by Robert C. Martin and his son Micah Martin. 其中写到他们关于UML、CASE使用的观点,有点颠覆传统的意味,觉得很好玩儿,贴出来和大家共享。我的理解也许还有偏差,不能完全代表Robert的观点,纯属标题党吸引眼球,呵呵。

1、要对完全掌握UML的n多种图形么?

UML有类图啊、状态图啊什么的好多种,但对程序员来讲,一般用到的也无非就那么几种:类图(Class Diagrams)、对象图(Objects Diagrams)、顺序图(Sequence Diagrams)、协作图(Collaboration Diagrams)和状态图(State Diagrams);

2、为什么要建模?

有人可能说:架构设计师不用UML画上一大堆的图形那还叫架构师么?可Robert说,非也,架构师是用代码而不是一大堆乱七八糟的UML图形,UML图形只是用来交流的工具,是用来画在白板或者白纸上,用完就扔的,而不是把它弄成一段貌似正式的文档装订成册装点门面。

3、开发过程一定要建模吗?

非也,建模的目的是为了测试某个方案是否可行,既然是测试,当然那个成本低就用哪个,如果直接用代码和画复杂的UML图代价差不多的话,还不如直接用代码。

4、什么时候要画UML图,什么时候不用画?

需要画的情形:

  • 几个人需要同事做某件事,从而他们都要了解整个结构,需要画UML图统一思想。大家达成共识了,这些图形也就功德圆满,可以擦掉扔掉了。
  • 你想让团队达成共识,但有那么一两个不同意你的方案。你需要在固定的时间段内来讨论一下,讨论时间用完了就应该把结果定下来,不要总没完没了的讨论、扯来扯去的。可以通过投票或者权威人士判定。
  • 当你在思考一个设计时,可以用UML来辅助思考,想清楚了就可以把这些图形扔掉了。
  • 你要把你的代码解释给别人听时,需要画一些。
  • 项目要结束了,客户非要你提交UML图当做文档时,得画吧。

下面的情形就不用画了:

  • 貌似软件开发过程要求了要画UML然后在coding?
  • 你觉得要不画点UML图什么就会觉得内疚,其实大可不必。
  • 创建复杂的UML比写代码还麻烦呢,这种情况还不如不画

5、关于CASE工具

在你打算投资购买一套CASE工具之前,要仔细想想清楚哦~

  • CASE工具不是能让我们在画UML图时更容易么?不,他只能是增加复杂度。因为你学习这个软件也得费半天劲。
  • CASE工具不是能让一个大的团结在画UML图时能更方便的合作么?只是有时候是,但是一般一个很大的团队根本用不着画那么多那么复杂的UML图形。
  • CASE工具不是能自动生产代码么?的确是,但是维护修改这些生产的代码估计和你自己写也省不了多少事,所以建议在花钱买CASE工具之前好好衡量一下到底能给你提高多少的生产力。
  • 那把CASE工具和IDE集成在一起的怎么样?嗯,这个想法不错。但是坦率的说,我宁愿把投入到CASE的这部分钱花在IDE在编程方面的改进上。

6、有的时候使用文本格式的比图形更简单。还有机会使用自动化工具做进一步处理。比如针对State Transitions Tables的SMC(Statce Machine Compiler) 可以参考 http://www.objectmentor.com

 

嗯,结论:

不要为了UML而去UML;UML只是交流工具,交流清楚了就可以扔掉了;在画UML图形时应该能够想像到对应的代码实现,否则就别画了。

posted @ 2008-03-14 11:44 峻祁连 阅读(1847) | 评论 (7)编辑