--时间的处理 
--
(1)短时间的处理
declare @S datetime
set @S=getdate()
--select (convert(varchar(10),@S,120))
--
select datediff(m,@S,3)
select replace(convert(varchar(10),@S,120),'-0','-')
--长时间的处理
declare @S datetime
set @S=getdate()
select
stuff(
stuff(convert(varchar(10),@s,112),5,0,''),8,0,'')+''
--日期第一天
declare @S datetime
set @S=getdate()
select convert(varchar(4),@s,120)+'0101'
--指定日期所在季度的第一天
declare @S datetime
set @S=getdate()
select convert(datetime,
convert(char(6),dateadd(month,datepart(qq,@S)*3-2,dateadd(month,-month(@S),@s)),112)+'01')
--指定日期所在的季度的最后一天
declare @S datetime
set @S=getdate()
select dateadd(day,-1,(convert(datetime,
convert(char(6),dateadd(month,datepart(qq,@S)*3+1,dateadd(month,-month(@S),@s)),112)+'01')))
--指定日期所在月份的第一天
declare @S datetime
set @S=getdate()
select convert(char(8),@s,120)+'01'
--指定日期所在月份的最后一天
declare @S datetime
set @S=getdate()
select dateadd(day,-1,convert(datetime,convert(char(8),dateadd(month,1,@s),120)+'01'))
--指定日期所在周的任意一天
declare @S datetime
set @S=getdate()
select dateadd(day,1,dateadd(day,-datepart(weekday,@s),@s))

  

posted @ 2011-09-16 10:47 风疑 阅读(8) 评论(0) 编辑

昨天在项目中,需要想系统的日志中写入相应的日志信息,比如错误日志,所以便在园里看了看,发现了一篇不错的文章。

http://www.cnblogs.com/nokiaguy/archive/2009/02/26/1398708.html

具体内容不说了,看这个文章就好,作者写的很不错。

那我写这个做什么呢?难道就是为了贴个链接吗?当然不是了,我要说的是后续的种种问题。那可谓十分无语。。。

我需要的是在日志中产生一个新的节点,然后再日志中写入自己的源。如图:

 
 
我的是win7的系统。看起来貌似是没错的,但是当你运行代码的时候你首先会发现,它,它,它。。。报错了。
报的是一个安全的错误。当然,是在web中,如果是类似windows服务的程序,只要把你的登陆名设置为本地用户就没有问题了。
它是为什么呢?你需要打开你的注册表,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog,你会发现,在这个下面有一个HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Security,当你去判断是否存在源的时候,将会遍历这个注册表项,但是此时你是没有权限的,所以,报错了。
那么,应该怎么办呢?本人测试了windows2003、win7、windows2008,当你在2003中,需要给eventlog一个权限,就是iis_wpg。当然,我的一个朋友在他的机器上实验的时候,并没有添加这个权限,
但是也成功了,究竟为什么就不得而知了。如果是win7或2008的话,那么需要加一个network service这个权限,应为此时已经没有iis_wpg了。
还有,源的问题,貌似当一个源已经存在以后,再次想创建一个源会出错,这个有待再次确定。
最后说最诡异的问题。我在win7下进行调试时,如果希望在vs中进行调试,那么请你在启动vs时以管理员身份启动。一开始是没有问题的。但是到后来,等我往里面写信息的时候发现怎么也写不进去了。
不报错,就是写入进去信息。当我重新创建一个新的节点新的源的时候,可以写进去,但是使用已有的,写不进去。很无奈。当我重启机器若干次以后,突然又能写进去了,这。。。。无语啊。
posted @ 2011-05-24 10:40 风疑 阅读(129) 评论(0) 编辑

最近在项目中需要进行文件压缩,即将打包好的压缩文件提供给用户,用户进行下载。

获知微软提供了一个System.IO.Packaging.Package的类,从而可以进行打包,那么我就进行了使用。谁知道,这一用就用出事了。

首先看代码吧。

结构并不复杂,vs2010+mvc3,直接写在action里。(例子是这样写的)需要注意的是,System.IO.Packaging.Package是在WindowsBase.dll里的。

private const long BUFFER_SIZE = 4096;
public ActionResult DownLoad(int id)
{
//实际情况中,此处将会根据id从数据库中获得数据列表
//此列表中将包括需要压缩的文件名
try
{
byte[] file = null;
//假设,有一个download目录,作为下载目录,其中包含若干文件
string folder = Server.MapPath("~/download/");
DirectoryInfo f
= new DirectoryInfo(folder);
using (MemoryStream ms = new MemoryStream())
{
using (Package zip = Package.Open(ms, FileMode.Create))//使用内存流打开
{
//在实际情况中,此处将会是一个循环,从数据库中获得一批需要进行压缩的文件路径
//获得相对根路径
Uri uri = PackUriHelper.CreatePartUri(new Uri("文件路径", UriKind.Relative));
if (zip.PartExists(uri))//如果此文件已存在,删掉
{
zip.DeletePart(uri);
}
PackagePart part
= zip.CreatePart(uri, "", CompressionOption.Normal);
//使用文件流打开需要压缩的文件
using (FileStream fileStream = new FileStream(folder + "文件路径", FileMode.Open, FileAccess.Read))
{
using (Stream dest = part.GetStream())
{
//将数据复制到stream中
CopyStream(fileStream, dest);
}
}
//此处对应循环结束
}
file
= ms.ToArray();
}
return File(file, "application/x-zip-compressed", "myFile.zip");
}
catch (Exception ex)
{

return View("Error");
}
}

private static void CopyStream(System.IO.Stream inputStream, System.IO.Stream outputStream)
{
long bufferSize = inputStream.Length < BUFFER_SIZE ? inputStream.Length : BUFFER_SIZE;
byte[] buffer = new byte[bufferSize];
int bytesRead = 0;
long bytesWritten = 0;
while ((bytesRead = inputStream.Read(buffer, 0, buffer.Length)) != 0)
{
outputStream.Write(buffer,
0, bytesRead);
bytesWritten
+= bufferSize;
}
}

虽然我对于流的理解并不是很好,但是大概的代码思路还是有的。感觉这里并没什么问题。可是,结果却并非我所想象的那样。

首先,在本地进行测试,并无错误。

然后部署到IIS中,其中包括iis7和iis6.一开始并不报错,但是后来就开始出错了。

报的最频繁的错误就是,无法访问已关闭的流。

还有一个是什么具体的忘记了。最直观的就是,当下载的压缩包并不大时,大概在20-30M左右,没事。一旦在大点,就开始报错了。

这让我很不能理解。

我在一台服务器上设置了everyone的权限,没事了,当去掉everyone的权限后,错误又出现了。

此时,开始考虑错误。

个人的想法是:压缩包从内存流中读取,然后通过文件流进行写入,此时应当会产生一个临时文件,但是这个临时文件的大小是受限的,一旦太大

就无法继续进行写入了。从而关闭文件流。

当然,到底是否是正确的,还无从得知。因为,到现在也没有获得正确的答案。

最终使用了另外的一种压缩方法进行压缩。

在此,将问题抛出,静等园内众神指点解惑。

PS:貌似直接ouputstream不行。

posted @ 2011-05-11 17:13 风疑 阅读(1322) 评论(5) 编辑
摘要: 在上一篇文章中曾经说了一个排序,当然,那个是客户端的排序,能力有限。但是在我的项目中却真的就需要一个排序功能,鄙人不才,能力有限,写了一堆丑陋的代码,仅实现了功能,希望路过的神们review下。好,废话不多说,直接【插入】主题吧。(咦?这个词很好啊。)首先早Models里创建一个实体,这里没弄数据库,凑合凑合吧,就瞎写了个实体。代码如下: public class UserInfo { public int ID { set; get; } public string Name { set; get; } public int Age { set; get; } }然后创建一个controll阅读全文
posted @ 2011-04-25 18:01 风疑 阅读(877) 评论(2) 编辑
摘要: 前天,同事问我,jquery可不可以排序,我就有点发蒙,我说你在服务器端排吧,linq排起来很容易的,不过被否决了。(不过最终还是linq排的,但那是后话,下次说怎么做)我就google了下,别说,还真有,我就想嘛,jquery的迭代器那么强大,怎么也会有能排序的。具体哪里找的忘记了,不过作者的地址还有http://github.com/razorjack/jquery.sortedbody里的内容很简单: <div> <ul> <li data-id="9">one</li> <li data-id="8&q阅读全文
posted @ 2011-04-23 18:13 风疑 阅读(1153) 评论(0) 编辑

昨天得知,在我的项目中需要加入一个调色板,即颜色选择器。

根本没多想,直接jquery的插件吧,服务器端神马的就直接无视了。

在网上找了找,发现有很多不错的,但是都看起来比较复杂,有的相对来说底子差点的用户可能不太会用,最终发现了一款不错的颜色选择器----iColorPicker。

简介

iColorPicker是一个免费的,小巧的jQuery颜色选择器,只需为input控件添加名为’iColorPicker’的class属性值,即可将其转变成漂亮的颜色选择器。

下载

可以从官方网站supersite.me下载

使用

首先需要加载jQuery和iColorPicker的脚本文件,然后为input元素添加值为’iColorPicker’的class属性。

<script src="jquery.js" type="text/javascript"></script>
<script src="iColorPicker.js" type="text/javascript"></script>
<input id="mycolor" name="mycolor" type="text" value="#ffcc00" class="iColorPicker" />

注意事项: 每一个input控件都要有唯一的ID属性。

还要修改iColorPicker.js文件,修正颜色选择器开关图片的地址:

var imageUrl='图片地址';//注意,这里不改的话,文本框后面的图标是红叉
结果如下:



ps:本来想在自己的文章里嵌实现示例,但是不会弄,谁能告诉我怎么弄?还有,上面的是图片,哈哈,别点了。
posted @ 2011-04-23 17:57 风疑 阅读(745) 评论(2) 编辑
摘要: 在上一次实验中,尝试了使用连接服务器和即席查询实现将Excel中的数据导入到SQL Server2005的数据库中。但是俗话说得好,计划赶不上变化,这不,变化来了。在进一步的尝试中发现,使用即席查询等方式,极有可能出现错误,要么是SQL Server2005中外围配置的即席查询设置没开,要么就是Excel表从外界被打开无法读取数据。还有一点的是,Excel文件必须和数据库在一台机器上(个人是这样认...阅读全文
posted @ 2009-05-07 16:51 风疑 阅读(428) 评论(1) 编辑
摘要: 遇到了一个需求,需要将Excel中的数据导入SQL Server数据库中,当然,不是使用企业管理器之类的直接导入数据的那种,而是要做到程序中。本来我最初的考虑是将Excel中的数据读到dataset中,然后分别插入到数据库中。从Excel中读取数据并不太难,简单来说就是下面的几句代码而已:[代码]path为Excel的路径。像其他的情况,比如多个sheet啊,工作区域啊什么的,在园内查一下就可以了...阅读全文
posted @ 2009-05-06 08:52 风疑 阅读(774) 评论(0) 编辑
摘要: [代码]在执行存储过程时需要输入表明作为参数。例如:exec spGenInsertSQL TableName阅读全文
posted @ 2009-04-03 11:45 风疑 阅读(256) 评论(0) 编辑
摘要: 现在做一个remoting的小东西,我的项目构成是这样的,如图:在AttendanceManage类库中Attendance.cs是数据访问类。Base类库主要是写一个抽象父类,并由Attendance继承。AttendanceInfo.cs是实体类。下面的控制台应用程序相当于服务器端。首先,在AttendanceInfo.cs代码如下:[代码]AttendanceBase.cs代码如下:[代码]...阅读全文
posted @ 2009-03-25 19:03 风疑 阅读(1503) 评论(8) 编辑