2012年5月15日

随笔一 ZIP

pdf=>zip
 1 using System;
 2 using System.IO;
 3 using ICSharpCode.SharpZipLib.Checksums;
 4 using ICSharpCode.SharpZipLib.Zip;
 5 
 6 //引用"ICSharpCode.SharpZipLib.dll"
 7 void ConvertToZIP()
 8 {
 9             Crc32 crc32 = new Crc32();
10 
11             byte[] buffer;
12             using (FileStream fs = File.OpenRead(@"d:\\oldnameXXXX.pdf"))
13             {
14                 buffer = new byte[fs.Length];
15                 fs.Read(buffer, 0, (int) fs.Length);
16             }
17 
18             byte[] outBuffer;
19             using (MemoryStream ms = new MemoryStream())
20             {
21                 ZipOutputStream zipOutputStream = new ZipOutputStream(ms);
22                 zipOutputStream.SetLevel(5);
23 
24                 ZipEntry zipEntry = new ZipEntry("NewNameXXXX.pdf");
25                 zipEntry.DateTime = DateTime.Now;
26                 zipEntry.Size = buffer.Length;
27                 crc32.Reset();
28                 crc32.Update(buffer);
29                 zipEntry.Crc = crc32.Value;
30 
31                 zipOutputStream.PutNextEntry(zipEntry);
32                 zipOutputStream.Write(buffer,0,buffer.Length);
33                 zipOutputStream.Finish();
34                 zipOutputStream.Close();
35 
36                 outBuffer = ms.ToArray();
37             }
38 
39             using (FileStream fs = new FileStream("D:\\XXXX.ZIP",FileMode.Create))
40             {
41                 fs.Write(outBuffer,0,outBuffer.Length);
42                 fs.Flush();
43             }
44 }

posted @ 2012-05-15 11:22 蕲人ZB 阅读(8) 评论(0) 编辑

2012年5月11日

sql 中 遍历数据集 处理方法一(非游标)

  一个数据集 ,假设是 一个表结构,可以自定义创建表变量,在这里用 临时表temp1.

-- 
declare 
@FSn           as nvarchar(50),
@FStatus            as int,
@FSErrorstr        as nvarchar(100)

while exists(select FSn from #temp1)
  begin
    Set RowCount 1
    select @FSn = fsn from #temp1
    select @FStatus=FStatus from t1 where FSn=@FSn
    if @FStatus=0
      begin    
        set @FSErrorstr= ' number :'+ @FSN +' is not a qualified,please check!'    
        RAISERROR(@FSErrorstr,18,18)
      end    
    SET ROWCOUNT 0
    delete from #temp1 where FSn= @FSn
  end

IF OBJECT_ID('Tempdb..#temp1') is not null  
  BEGIN
    drop table #temp1
  END

先判断临时表数据集中有没有数据,再借用 Set RowCount 1 功能 查询出一行 ,然后进行需要的逻辑处理,例中主要是查表中序列号,当该序列号的状态为0时,

将会报出错误.反之无问题,逻辑判断完成;最后执行Set RowCount 0 以便返回所有的行(也就是将此功能设置为 off ),然后从该数据集中删出该条查询记录;

接着又进行while判断继续相同逻辑处理.(当然数据集中要保证 FSn为主键或唯一标识值,否则最后一步删除可能会删除有同样FSn的记录,以致功能缺陷. 在此想到:在执行deleted之后再执行Set RowCount 0 是否可以解决此问题,因为还未执行Set RowCount 0前还受执行sql只影响一行的作用,执行delete可以确保此操作对象是查询的数据记录; 这个语法在不久之后的版本将不再支持,所以尽量不采用Set RowCount功能,类似功能有top .在此不细讲.)

PS:此次主要是说说有些情况下可以不用游标来处理这种遍历问题,由于sql只是刚了解,在实际项目中很大可能碰到这种情况,以往一直用到游标,在数据量较大时,会影响处理效率;记录着这种处理方法,可以帮助自己以后碰到类似问题快速处理,毕竟好记忆不如烂笔头.o(∩_∩)o 

posted @ 2012-05-11 15:27 蕲人ZB 阅读(10) 评论(0) 编辑

2012年5月9日

c# 拖动控件事件

C#中提供了一个系统拖放事件,与拖放方法一起使用来达到更好的效果。常用的拖放事件如:

拖放事件:  

DragEnter 当用户在拖放操作过程中首次将鼠标光标拖到控件上时,会引发该事件 ;

DragDrop 在完成拖放操作时发生 ;

GiveFeedback 在执行拖动操作期间发生 ;

DragLeave 如果用户移出一个窗口,则引发DragLeave事件 ;

DragOver 如果鼠标移动但停留在同一个控件中,则引发DragOver事件 ;

QueryContinueDrag 在拖放操作过程中,当键盘或鼠标按钮状态发生变化时,会引发QueryContinueDrag 事件。

QueryContinueDrag事件允许拖动源确定是否应取消拖放操作

posted @ 2012-05-09 09:52 蕲人ZB 阅读(331) 评论(0) 编辑

仅列出标题  

导航

统计

公告