今天早上看到一篇文章(Exporting to Excel Using a CLR Stored Procedure )觉得非常实用,就拿来跟大家分享一下。  
  这篇文章主要提供了一个Sql Server导出数据到Excel一个快捷方便的方式,如果你日常工作常常需要从数据库导出数据到Excel的话,你会发现这对你非常有用。
    

  好了,废话少说,我这里就简单说一下如何使用:
     1. 下载代码ExcelExport.zip
     2. 编译项目,把生成的dll复制到一个目录,例如:c:\CLR
     3. 在SQL SERVER上启用CLR

sp_configure'clr',1
reconfigure

  4. 使用ALTER DATABASE 命令打开 Trustworthy 数据库属性

ALTER DATABASE 数据库名 SET TRUSTWORTHY ON

  5. 创建程序集

CREATE ASSEMBLY ExportToExcel
FROM 
'C:\CLR\ExcelExport.dll' --CLR 程序集存放的地方
WITH PERMISSION_SET 
= EXTERNAL_ACCESS

  6. 创建一个存储过程关联到上一步创建的程序集

CREATE PROCEDURE[dbo].[prc_ExportToExcel]
       @proc [nvarchar](100),
       @path [nvarchar](200),
       @filename [nvarchar](100),
       @params xml
AS
EXTERNAL NAME [ExportToExcel].[StoredProcedures].[ExportToExcel]

  7. 好了,到这里准备工作就算完成了,下面是使用的例子:

Declare @params xml
Set @params 
= '<params><param name="lastname" value="Smith" /><param name="country" value="US" /></params>'
exec prc_ExportToExcel 
'procname',‘Drive:\Directory\''Filename', @params

  a) 第一个参数是获取数据的存储过程名

  b) 第二个参数是输出的目录

  c) 第三个参数是输出的文件名,不需要带后缀

  d) 第四个参数是获取数据的存储过程需要的参数。name代表参数名,value代表参数值。

    如果获取数据的存储过程没有参数的话,就使用:Set @params ='<params></params>'

posted @ 2009-12-03 12:05 小No 阅读(1772) | 评论 (7)编辑

  周末的时候把系统升级到Windows 7(64bit),在装完VS 2008 RTM版,并且打上SP1之后,想安装SQL SERVER 2008,去发现死活安装不了,出现Rule “Previous releases of Microsoft Visual Studio 2008″ failed.

  后来Google了一下,发现解决办法很简单,只要两步就可以绕过这个检查:

     1. 打开CMD,进入SQL SERVER 2008安装目录

     2. 运行命令:Setup /ACTION=install /SkipRules=VSShellInstalledRule

  然后就可以正常安装了,不过需要注意的是,你必须确保是真的安装了VS 2008 SP1,否则在安装过程中还是会出错的。

posted @ 2009-11-23 11:03 小No 阅读(111) | 评论 (0)编辑
    我在公司一直是用VS 2008做开发,但最近有个旧项目(VS 2005开发的)需要做些修改,而我又不想装VS 2005,直接把项目的解决方案升级为VS 2008的解决方案的话,又怕其他没装VS 2008的同事打不开,那么有没有办法可以同时让VS 2008和VS 2005都可以打开该项目呢?答案是肯定的,而且非常简单。

只要2步就可以:

1. 把原来的VS 2005的解决方案复制一份,兵改名为xxx.2008.sln

2. 使用VS 2008打开xxx.2008.sln,按照转换向导的提示转换项目

转换成功之后,就可以使用VS 2005打来原来的旧的解决方案,用VS 2008打xxx.2008.sln这个解决方案。
不过需要注意的是,用VS 2008打开项目时,千万不要加入一些.NET 3.5独有的代码或者VS 2008的新特性,否则当使用VS 2005打开项目时是没办法编译通过的

posted @ 2009-09-04 15:26 小No 阅读(411) | 评论 (1)编辑

趁上周周末空闲的时候,参考Subsonic的一些代码并模仿它的语法写了一个动态生成SQL语句的组件,主要是为了能提高一下开发效率。

实现原理这里就不细说了,有兴趣的朋友可以看一下源码,应该不难明白。

这里主要简单介绍以下个这个组件的用法:

1.  首先从最简单的开始,从一个表中获取其中几个列的数据

Code


以上的代码将会动态生成以下的SQL语句:"SELECT ProductID, ProductName FROM Products"
其中CreateProduct是个委托,方法签名是接收一个IDataReader的参数,返回值是一个实体类,这里的返回值就是Product这个实体类

2. 获取分页数据:

Code


以上代码将会产生以下的SQL语句:

WITH t AS (SELECT ROW_NUMBER() OVER(ORDER BY ProductID DESC) as row_number,*  FROM Products) Select * from t where row_number BETWEEN 1 and 20;Select count(0)  FROM Products;
 
这个SQL语句需要SQL 2005以上的数据才支持,还有使用分页必须加入排序,否则会报错。
PagerList这个类会有一个名叫TotalRecords的属性,也就是该次分页查询的总记录数。
 
3. 支持带()的表达式,以下的代码是一个NUit单元测试的代码:
Code
 
简单说明以下如果要使用带括号的表达式,必须使用AndExpression或者OrExpression。
使用AndExpression之后,其实就是在And之后先加入一个(,然后直到CloseExpression方法出现后才会加上)。
 
这个组件还支持In、Between、IsNull等一些操作,还有ToDataSet,First等一些获取数据的方法。
有兴趣的朋友可以下源码来看看,代码很简单的。
 
以下是下载地址:
 
posted @ 2009-03-31 00:42 小No 阅读(1689) | 评论 (9)编辑

上个礼拜,我的Azure邀请码终于到了,小兴奋了一把,于是马上去注册账号,并成功部署了一个网站到Azure上。

由于最近在学习Asp.Net Mvc框架,于是就想部署一个Mvc应用到Azure上,本来理所当然的认为Azure会支持Mvc,结果实际部署之后发现并不支持。

后来经过几次都不成功之后,有点想放弃了,不过幸好后来看到了以下这篇文章:

http://blogs.msdn.com/jnak/archive/2008/11/10/asp-net-mvc-on-windows-azure-with-providers.aspx

阅读了这篇文章,发现其实部署一个Mvc应用到Azure其实很简单,我按照里面所说的步骤很快就成功部署了一个应用。

这是我已经成功部署到Azure上的网站,大家可以先看看效果: http://np.cloudapp.net/ 

为了方便大家阅读,我在这里就简单的翻译一下,总结起来可以有以下几点:

1.  新建一个空的Cloud Service,例如叫:MVCCloudService。

        image 

2. 添加一个Asp.Net Mvc Application,例如叫MVCWebRole。

        image 

3. 卸载刚刚建的MVCWebRole项目。

        image 

4. 右键编辑MVCWebRole项目文件。

        image 

5. 把<RoleType>Web</RoleType>加到项目文件的第一个<PropertyGroup>中,并保存。就像以下那样:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup> 
     . . . 
    <RoleType>Web</RoleType>
<PropertyGroup>

6. 重新加载MVCWebRole项目。

       image 

7. 右键点击MVCCloudService项目的Roles节点,选择 Add -> Web Role Project in solution

    image    

    选择MVCWebRole 项目

    image 

8. 最后一步,也是很关键的一部。
    由于Azure上面没有安装ASP.NET MVC RC2,所以你必须把System.Web.Abstractions,System.Web.Mvc,System.Web.Routing这三个dll打包到服务包里面,部署到Azure之后你的网站才能运行正常。

    打包方法很简单,就是把MVCWebRole项目引用的这3个dll的复制本地属性设置为true就可以了。

     image      

到这里一个能部署到Azure上正常运行的Asp.net Mvc 应用就已经基本完成了,最后发布的步骤这里就不再啰嗦了,不懂得发布的可以到园子搜索一下,有很多关于如何发布一个应用到Azure的文章。

个人推荐浏牛木马的Azure Services Platform Step by Step系列文章:

http://www.cnblogs.com/azure/tag/Azure/

 

最后为了方便大家测试,我把按照以上步骤做好的源码共享给大家。 

源代码: http://files.cnblogs.com/NickYao/MVCCloudService.rar 

最后再补充说明一下,在vs 2008中Azure cloud service 项目和Mvc项目在同一个解决方案的话,是会是vs 2008崩溃的,解决办法就是去下载一个补丁,补丁地址是:https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=16827&wa=wsignin1.0 

不过这个补丁不能用于Windows 7,哎。。。我就是在用windows7,白老鼠真的是要承受很多的不便。。。

 

 

posted @ 2009-03-17 13:26 小No 阅读(2242) | 评论 (14)编辑
     摘要: Myspace和Facebook都是很优秀的社交类网站,它们拥有的用户和fans之多,大家都很清楚。Myspace是一个基于.NET平台的,而Facebook更多是基于LAMP的。我们来看看MySpace配合.NET+Windows Server 2003+Sql Server 2000/2005+IIS怎么创造传奇的文章正文如下:在每个里程碑,站点负担都会超过底层系统部分组件的最大载荷,特别是数...  阅读全文
posted @ 2009-03-13 16:13 小No 阅读(112) | 评论 (2)编辑
     摘要: 企业内部网站一般采用windwos身分验证机制。主要包括两部分一、程序代码中读取当前windows用户帐号二、IIS和ASP.NET的web.config设置一、这段代码可以取出当前windows用户的帐号,string strUser; System.Security.Principal.WindowsIdentity objIden = System.Security.Principal.Wi...  阅读全文
posted @ 2009-03-12 10:20 小No 阅读(327) | 评论 (0)编辑
     摘要: 概述 Win+Up 最大化 Win+Down 还原/ 最小化 Win+Left 通过AeroSnap靠左显示 Win+Right 通过AeroSnap靠右显示 Win+Shift+Left 跳转左边的显示器 Win+Shift+Right 跳转右边的显示器 Win+Home 最小化/ 还原所有其他窗口 Win+T 选中任务栏首个项目 再次按下则会在任务栏上循环切换 Win+Shift+T 则是后退...  阅读全文
posted @ 2009-01-19 10:12 小No 阅读(64) | 评论 (0)编辑
     摘要: 前些时间看了玉开兄的“如此高效通用的分页存储过程是带有sql注入漏洞的”这篇文章,才突然想起某个项目也是使用了累似的通用分页存储过程。使用这种通用的存储过程进行分页查询,想要防SQL注入,只能对输入的参数进行过滤,例如将一个单引号“'”转换成两个单引号“''”,但这种做法是不安全的,厉害的黑客可以通过编码的方式绕过单引号的过滤...  阅读全文
posted @ 2008-11-28 16:05 小No 阅读(2899) | 评论 (28)编辑