应该感谢那些指出你错误的人

借我三千虎骑,复我泱泱中华!

博客园 首页 新随笔 联系 订阅 管理
  11 Posts :: 166 Stories :: 50 Comments :: 1 Trackbacks

2007年8月23日 #

终于找到这个过程了:

CREATE       PROCEDURE   dbo.UspOutputData  
  @tablename   sysname  
  AS  
  declare   @column   varchar(1000)  
  declare   @columndata   varchar(1000)  
  declare   @sql   varchar(4000)  
  declare   @xtype   tinyint  
  declare   @name   sysname  
  declare   @objectId   int  
  declare   @objectname   sysname  
  declare   @ident   int  
   
  set   nocount   on  
  set   @objectId=object_id(@tablename)  
   
  if   @objectId   is   null   --   判斷對象是否存在    
  begin    
  print   'The   object   not   exists'    
  return    
  end    
  set     @objectname=object_name(@objectId)  
   
  if     @objectname   is   null   or   charindex(@objectname,@tablename)=0   --此判断不严密  
  begin  
  print   'object   not   in   current   database'  
  return  
  end  
   
  if   OBJECTPROPERTY(@objectId,'IsTable')   <>   1   --   判斷對象是否是table    
  begin    
  print   'The   object   is   not   table'    
  return    
  end    
   
  select   @ident=status&0x80     from   syscolumns   where   id=@objectid   and   status&0x80=0x80  
   
  if   @ident   is   not   null  
  print   'SET   IDENTITY_INSERT   '+@TableName+'   ON'  
   
  declare   syscolumns_cursor   cursor    
  for   select   c.name,c.xtype   from   syscolumns   c  
  where   c.id=@objectid  
  order   by   c.colid  
  open   syscolumns_cursor  
  set   @column=''  
  set   @columndata=''  
  fetch   next   from   syscolumns_cursor   into   @name,@xtype  
  while   @@fetch_status   <>-1  
  begin  
  if   @@fetch_status<>-2  
  begin  
  if   @xtype   not   in(189,34,35,99,98)   --timestamp不需处理,image,text,ntext,sql_variant   暂时不处理  
  begin  
  set   @column=@column+case   when   len(@column)=0   then''   else   ','end+@name  
  set   @columndata=@columndata+case   when   len(@columndata)=0   then   ''   else   ','','','end  
  +case   when   @xtype   in(167,175)   then   '''''''''+'+@name+'+'''''''''   --varchar,char  
  when   @xtype   in(231,239)   then   '''N''''''+'+@name+'+'''''''''   --nvarchar,nchar  
  when   @xtype=61   then   '''''''''+convert(char(23),'+@name+',121)+'''''''''   --datetime  
  when   @xtype=58   then   '''''''''+convert(char(16),'+@name+',120)+'''''''''   --smalldatetime  
  when   @xtype=36   then   '''''''''+convert(char(36),'+@name+')+'''''''''   --uniqueidentifier  
  else   @name   end  
  end  
  end      
  fetch   next   from   syscolumns_cursor   into   @name,@xtype  
  end  
  close   syscolumns_cursor  
  deallocate   syscolumns_cursor  
   
  set   @sql='set   nocount   on   select   ''insert   '+@tablename+'('+@column+')   values(''as   ''--'','+@columndata+','')''   from   '+@tablename  
   
  print   '--'+@sql  
  exec(@sql)  
   
  if   @ident   is   not   null  
  print   'SET   IDENTITY_INSERT   '+@TableName+'   OFF'  
   
  GO  


执行方法是: exec   UspOutputData   你的表名  
  得到导出数据的语句,但image,text,ntext,sql_variant   列不出现在语句,以后改进。  

posted @ 2007-08-23 21:55 落拓孤鸿 阅读(3794) 评论(3) 编辑

2007年6月28日 #

一、.NET框架(七种武器之孔雀翎)

开发人员应该熟悉.NET FrameWork体系结构和基本原理,熟悉CLR(公共语言运行时)和MSIL(中间语言),熟悉.NET框架中的委托、线程、序列化、集合、垃圾回收机制、反射等内容。

(世界上绝没有一种暗器能比孔雀翎更厉害,也绝没有一种武器能比孔雀翎更美丽……孔雀翎娇小的身躯中隐藏着巨大的威力…….NET框架的博大精深,正如同孔雀翎一样美丽而深不可测。)

二、面向对象软件开发(七种武器之霸王枪)

开发人员应该熟悉面向对象软件开发(OOP)基本概念,熟悉面向对象软件开发中的类、继承、封装、多态等概念,具备良好的面向对象软件开发思想和设计原则。

(霸王,力拔山兮气盖世。枪,百兵之祖是为枪……霸王枪是世上最霸道的兵器之一……正如面向对象软件开发,它大小通吃,不论是采用何种软件开发框架,还是使用不同的开发语言,面向对象软件开发在其中畅通无阻,霸气十足。)

三、C# (七种武器之离别钩)

开发人员应该熟练掌握C#这门面向对象编程语言,虽然.NET框架支持多种编程语言,但C#无疑是最简洁、使用者最广泛和功能最强大的一种。

(离别钩是一件武器,无论钩住人的任何部位,都能造成离别……但使用它的初衷却是为了能够与所爱的人相聚……C#是一门年轻的语言,它的出现,让更多的开发者爱上了C#,脱离了VB和ASP的阵营,造成离别。)

四、ASP.NET(七种武器之碧玉刀)

开发人员应该理解ASP.NET的页面生命周期、熟悉配置文件的格式、熟悉ASP.NET的各种服务器控件和数据控件、了解ASP.NET中的各种对象,了解ASP.NET2.0新特性。

(刀是最容易上手的武器,也是使用最广泛的武器……ASP.NET技术在网站开发当中的应用,正如同刀一样地使用频繁,更何况是一把华丽的碧玉刀。碧玉刀本身也是实力的象征,就如同ASP.NET在WEB开发中的位置。)

五、数据库(七种武器之长生剑)

开发人员需了解各种主流数据库,熟悉数据库的规范设计、精通SQL及存储过程、触发器的编写。

(长生剑,世上最锋利的剑,剑气威力强大而又持续不断、绵绵不息……正如同数据库一样,吸纳吞吐,化大象于无形,强力支撑着软件系统。要想在IT界获得长生,就看你数据库的功底了。)

六、AJAX技术(JAVASCRIPT和XML)(七种武器之多情环)

XML和JAVASCRIPT的跨平台特性,在实际软件开发中的运用越来越广泛,由于现代软件对用户界面和WEB前端的日益重视,集JAVASCRIPT和XML技术于大成的AJAX正在流行,特别是在基于WEB2.0的网站开发中。

(多情环是一种奇特的武器。无论套住了什么,立刻就紧紧地缠住,绝不会再脱手,就像多情的恋人一样……JAVASCRIPT和XML技术已经出现多年,此前一直不痛不痒,但由于集JAVASCRIPT和XML于大成的AJAX技术的出现及其在互联网上的不断应用,又重新焕发出生命活力,就像多情的环一样,将众多的开发者牢牢系住,在2006年红透了整个IT界,2007年AJAX技术将继续红火。)

七、软件体系架构(拳头)

优秀的软件离不开优秀的软件体系架构,作为开发人员,要想在IT行业更进一步,需要具备系统的、良好的软件体系架构思维,从而从更高层次决定软件的整体系统框架。

(拳头也是一种武器。而且是无可替代的武器。当分散的五指握成拳头,它的力量又岂仅仅是原来的五倍……优良的软件体系架构是整个软件开发体系的核心,就如同拳头一样,它是直接而致命的。但有一点,不是每个人的拳头都可以用做武器的。)

结束语:无论多可怕的武器,也比不上人类的信心。所以人类最厉害的武器。便是自己的信心。相信你自己,做最好的自己,你就会成功!
posted @ 2007-06-28 21:32 落拓孤鸿 阅读(187) 评论(1) 编辑

2006年12月6日 #

最近公司项目需要做多文件上传处理,同时要求对上传上来的数据在不插入数据库的情况进行操作。
根据实际情况我做了如下的处理:
1:先实现把文件放在DataTable中。
2:将DataTable中数据放在DataGrid中进行呈现(可以及时的查看附件,可以及时的更改)。
3:启动事务,处理附件的主数据(某条具有多附件信息的数据)保存主数据并且返回唯一标识。
4:接受事务参数,保存附件信息。
5:返回。

在这其中,对于多文件上传的问题,我参考了老猫的多附件上传的代码。代码如下
        private void SaveFiles()
        
{
            
///遍历file
            HttpFileCollection files  = HttpContext.Current.Request.Files;

            
///状态信息
            System.Text.StringBuilder strMsg = new System.Text.StringBuilder(1000);
            strMsg.Append(
"上传的文件分别是:<hr color=red>");
            
try
            
{
                
for(int iFile = 0; iFile < files.Count; iFile++)
                
{
                    
///检查文件扩展名字
                    
///提供访问客户端已经上载的各个文件

                    HttpPostedFile postedFile = files[iFile];
                    
string fileName, fileExtension;
                    fileName 
= System.IO.Path.GetFileName(postedFile.FileName);
                    
if (fileName != "")
                    
{
                        fileExtension 
= System.IO.Path.GetExtension(fileName);
                        strMsg.Append(
"上传的文件类型:" + postedFile.ContentType.ToString() + "<br>");
                        strMsg.Append(
"客户端文件地址:" + postedFile.FileName + "<br>");
                        strMsg.Append(
"上传文件的文件名:" + fileName + "<br>");
                        strMsg.Append(
"上传文件的扩展名:" + fileExtension + "<br><hr>");
                        
///'可根据扩展名字的不同保存到不同的文件夹
                        
///注意:可能要修改你的文件夹的匿名写入权限。

                        postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("info/"+ fileName);
                    }

                }

                strStatus.Text 
= strMsg.ToString();
                
return ;
            }

            
catch(System.Exception Ex)
            
{
                
throw new Exception(Ex.Message);
            }

        }
posted @ 2006-12-06 22:13 落拓孤鸿 阅读(295) 评论(0) 编辑

2006年5月30日 #

 1using System;
 2using System.IO;
 3using System.Security.Cryptography;
 4
 5namespace Vavic
 6{
 7/// <summary>
 8/// Security 的摘要说明。
 9/// </summary>

10public class Security
11{
12const string KEY_6 = "VavicApp";
13const string IV_6 = "VavicApp"//注意了,是8个字符,6位
14
15public Security()
16{
17//
18// TODO: 在此处添加构造函数逻辑
19//
20}

21
22public static string Encode(string data)
23{
24byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_6);
25byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_6);
26
27DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
28int i = cryptoProvider.KeySize;
29MemoryStream ms = new MemoryStream();
30CryptoStream cst = new CryptoStream(ms,cryptoProvider.CreateEncryptor(byKey,byIV),CryptoStreamMode.Write);
31
32StreamWriter sw = new StreamWriter(cst);
33sw.Write(data);
34sw.Flush();
35cst.FlushFinalBlock();
36sw.Flush();
37return Convert.ToBase6String(ms.GetBuffer(),0,(int)ms.Length);
38
39}

40
41public static string Decode(string data)
42
43byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_6);
44byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_6);
45
46byte[] byEnc;
47try
48{
49byEnc = Convert.FromBase6String(data);
50}

51catch
52{
53return null;
54}

55
56DESCryptoServiceProvider cryptoProvider = 
posted @ 2006-05-30 18:37 落拓孤鸿 阅读(527) 评论(2) 编辑

2006年5月21日 #

最近突然发现,在任意一个文件,例如一个PDF文件,右键"属性","摘要",下面有许多的项可供选择,自己自相了一下,觉得这些是个很有用的信息,如果把这些项全部添上之后,那样岂不是搜索文件起来速度很快,那样的话,如果大型的栏目用文件组织起来搜索的,把组织的路径存储数据库,那样的话,搜索速度应该比单独的在磁盘中搜索我想应该快的多,我想了这些应该和WIN API有关系吧,后来在MS上找到了关于这些的文章,原来这个是叫脚本,呵呵,原来这样也可以叫脚本啊,见识了!
MS上也有提供这些的源代码,不过都是用VB写的,开源的!
里面有个VB7的项目,我想应该是VB.NET吧,试试着去转化一下,但是没成功,明天在去试!
posted @ 2006-05-21 00:07 落拓孤鸿 阅读(145) 评论(0) 编辑

2006年5月16日 #

摘要: 最近在想闹明白VISTA,所以就对MS的IE7.0想去体验一下,不知道从什么途径得到了个,但是在安装的时候竟然说我的系统不支持,不知道是什么回事!我的系统是 WIN2003+SP1,难道IE7.0不支持SERVER版本的?郁闷!现在提供出来给大家下一下看看,据说IE7.0很好.提醒一下:IE7.0安装的时候会验证你的OS的版本,正版的当然是没问题,如果是盗版的,那就.........嘿嘿!我想把I...阅读全文
posted @ 2006-05-16 15:38 落拓孤鸿 阅读(512) 评论(9) 编辑

2006年5月12日 #

摘要: 打个比方,我在这个站点上验证身份之后,就不需要在我的服务器上另外的站点验证了,就是说,身份在我的服务器上是共享的,就是类似的那种PASSPORT的东西,根据这样不知道各位有没有什么好建议呢?需要用WEBSERICE??在思考.............那数据库的结构又怎么来构建呢?阅读全文
posted @ 2006-05-12 10:33 落拓孤鸿 阅读(325) 评论(1) 编辑

2006年4月4日 #

摘要: 今天继续写C#的工业扫描串口。突然遇到一个很奇怪的问题:那就是我要求把某些码得到之后进行业务处理,但是就是这个时候突然发现扫描出来的 码位数不正确了!我就很怀疑自己的代码逻辑了。于是,我就逐行进行调试,而接受口扫描值的变量竟然是正确的,当我跳出调试回到程序中时候,竟然得到的码是正确的了!很郁闷!!!!!后来,我才想到,原来串口传输的数据是有限制的,每次只可以传输8位,而我要求传输的数据是13位,再...阅读全文
posted @ 2006-04-04 23:15 落拓孤鸿 阅读(838) 评论(1) 编辑

摘要: 项目需要写个扫描的程序,原来是用VB做的,用的也是很好!不知道是不是客户心血来潮,现在竟然要加到.NET平台下,用C#来实现。早就听说了C#对串口的支持不是很好,一用还真是的 。找到了MSComm.ocx之后把他COPY到SYSTEM32下面,写了个注册表文件,把这个给注册一下REGEDITHKEY_CLASSES_ROOT\Licenses=Licensing:Copyingthekeysmay...阅读全文
posted @ 2006-04-04 07:53 落拓孤鸿 阅读(1595) 评论(2) 编辑

2006年4月1日 #

摘要: 公司做的项目,要求要个查询的测试工具,没办法就写了个!现在有个问题是,我的查询条件可能有很多,我没什么好的办法,只想到了,多态这样的方式来实现,不知道还有其他的办法没?阅读全文
posted @ 2006-04-01 13:39 落拓孤鸿 阅读(239) 评论(3) 编辑