Goodspeed

2008年8月1日 #

Gmail式的上传

原理参见
http://www.cnblogs.com/xbf321/archive/2007/11/09/954317.html

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
<title>File Upload</title>
    
<script type="text/javascript" src="js/jquery-1.2.6.js"></script>
    
<script type="text/javascript">
    $(document).ready(
function(){
        
if(window.top == window)
        {
            
var $div = $(document.createElement("div"));
            $div.html(
"<iframe src='"+document.URL+"' name='uploadiframe' id='uploadiframe'></iframe>");
            $div.css({display:
"none"})
            $(
"body").append($div);
            $(
"form").attr("target","uploadiframe");
            $(
"form").submit();
            
            
            $(
".myupload").empty(); 
            
var $a = $(document.createElement("a"));
            $($a).html(
"upload");
            
            
            $($a).click(
function(){
                $(
"#uploadiframe").contents().find(":file").click();
                $(
"#uploadiframe").contents().find(":submit").click();
                
return false;
            });
            
            $(
".myupload").append($a); 
        }
    });
    
</script>
    
<script type="text/C#" runat="server">
        protected 
void File_Upload(object sender, EventArgs e)
        {
            
if (FileUploadControl.HasFile == true)
            {
                FileUploadControl.SaveAs(@
"D:\upload\" + FileUploadControl.FileName);
            }
        }
    
</script>
</head>
<body>
    
<form id="form1" runat="server">
    
<div class="myupload">
    
<asp:FileUpload ID="FileUploadControl" runat="server" />
    
<asp:Button runat="server" OnClick="File_Upload" Text="Upload It" />
    
</div>
    
</form>
</body>
</html>


 

posted @ 2008-08-01 10:58 Goodspeed 阅读(300) | 评论 (0)编辑

2008年6月12日 #

Google Earth

posted @ 2008-06-12 11:15 Goodspeed 阅读(215) | 评论 (1)编辑

2008年5月23日 #

郑惟骏 全台第一魔方高手

吴宗宪 我猜 节目里玩魔方的视频,鄭惟駿,全台第一魔方高手。

。。。。。。

posted @ 2008-05-23 10:41 Goodspeed 阅读(129) | 评论 (0)编辑

2008年4月18日 #

附加目录中所有的数据库文件

DECLARE @databasedir varchar(200)
SET @databasedir = 'F:\SQLServer\Data\'

/* 目录结构 */
DECLARE @t table(id int identity(1,1),subdirectory nvarchar(255),depth int,i int)

INSERT INTO @t(subdirectory,depth,i)
EXEC master..xp_dirtree @databasedir,0,1

DELETE FROM @t WHERE subdirectory NOT LIKE '%.mdf'
DECLARE @filename nvarchar(255),@dbname nvarchar(255),@filename1 nvarchar(255),@subdirectory nvarchar(255)
DECLARE @cmd nvarchar(4000)
create table #smoPrimaryFileProp(property sql_variant NULL, value sql_variant NULL

WHILE (SELECT COUNT(*FROM @t> 0
BEGIN
    
SELECT TOP 1 @subdirectory = subdirectory FROM @t
    
SELECT @fileName = @databasedir+@subdirectory;
BEGIN TRY
    
SET @cmd = 'dbcc checkprimaryfile (N'''+ @fileName + ''' , 2)'

    
TRUNCATE TABLE #smoPrimaryFileProp
    
insert #smoPrimaryFileProp exec (@cmd)

    
SELECT @dbname = CAST([value] AS nvarchar(255)) 
    
FROM #smoPrimaryFileProp WHERE [property] = 'Database name'
    
    
SELECT @filename1 = REPLACE(@fileName,'.mdf','_log.LDF');

    
    
EXEC sp_attach_db 
    
@dbname,
    
@fileName,@filename1
    
END TRY
BEGIN CATCH
END CATCH


    
DELETE FROM @t WHERE subdirectory = @subdirectory
END

DROP TABLE #smoPrimaryFileProp

posted @ 2008-04-18 17:38 Goodspeed 阅读(125) | 评论 (0)编辑

2008年4月11日 #

拷贝为路径

Windows Vista具有一个上下文菜单选项,叫做“拷贝为路径”,它可以帮助你轻松拷贝文件路径,尽管它是隐藏的。当你选中文件后,你只需要按住“Shift”键同时右键点击,即可拷贝路径。该选项对于多个文件和文件夹也同样适用。当你使用“拷贝为路径”选项对多个项目进行操作时,所有路径都会被解析、引用,并且被以多行的方式记录在剪贴板里。

posted @ 2008-04-11 18:12 Goodspeed 阅读(132) | 评论 (0)编辑

2008年2月22日 #

SQL Server 2008中的GROUPING SETS的应用实例

DECLARE @t TABLE(student nvarchar(50),class nvarchar(50),grade int)

/*insert some datas*/
INSERT INTO @t
SELECT N'孙小美',N'数学',10 UNION ALL
SELECT N'孙小美',N'语文',20 UNION ALL
SELECT N'孙小美',N'英语',30 UNION ALL
SELECT N'阿土伯',N'数学',40 UNION ALL
SELECT N'阿土伯',N'语文',50 UNION ALL
SELECT N'阿土伯',N'英语',60 UNION ALL
SELECT N'小叮铛',N'数学',70 UNION ALL
SELECT N'小叮铛',N'语文',80 UNION ALL
SELECT N'小叮铛',N'英语',90

SELECT * FROM
(
    
SELECT 
        
ISNULL(student,'ALL'AS student, 
        
ISNULL(class,'ALL'AS class, 
        
SUM(grade) AS grade
    
FROM @t
    
GROUP BY GROUPING SETS((student,class),student,class,())
AS t
PIVOT
(
    
MAX(grade) FOR class IN (数学,语文,英语,[ALL])
AS p
ORDER BY student DESC

posted @ 2008-02-22 16:19 Goodspeed 阅读(182) | 评论 (0)编辑

SQL Server 2008中的MERGE命令

SQL Server 2008可以执行TSQL的MERGE命令。用MERGE命令,只需一个语句就可以对行进行 UPDATE、INSERT或 DELETE。

DECLARE @t1 table(t varchar(max))
DECLARE @t2 table(t varchar(max))

INSERT INTO @t1
SELECT 'a' UNION ALL
SELECT 'b' UNION ALL
SELECT 'c'

INSERT INTO @t2
SELECT 'b' UNION ALL
SELECT 'c' UNION ALL
SELECT 'd'


MERGE 
@t1 AS t1
USING (
SELECT t FROM @t2AS t2
ON t1.t = t2.t
--WHEN MATCHED THEN 
WHEN NOT MATCHED THEN
INSERT (t) VALUES(t);

SELECT * FROM @t1

posted @ 2008-02-22 15:30 Goodspeed 阅读(176) | 评论 (0)编辑

2007年12月28日 #

获取表的记录行数

SELECT t.name,p.rows FROM sys.indexes AS i
INNER JOIN sys.tables AS t ON i.object_id = t.object_id
join sys.partitions p with(nolock) on i.object_id = p.object_id AND i.index_id = p.index_id
WHERE i.type_desc = 'CLUSTERED'
ORDER BY p.rows

posted @ 2007-12-28 15:26 Goodspeed 阅读(148) | 评论 (0)编辑

2007年12月3日 #

SQL server 2005 更改数据库名称

DECLARE @t table
(
    
    spid 
int
)

INSERT INTO @t
SELECT spid FROM sys.sysprocesses AS p
WHERE EXISTS
(
    
SELECT * FROM sys.databases
    
WHERE name = 'ednchina20071202'
    
AND p.dbid = database_id
)

DECLARE @spid int
DECLARE @sql nvarchar(max)
WHILE((SELECT COUNT(*FROM @t> 0)
BEGIN
    
SELECT TOP 1 @spid=spid FROM @t
    
SET @sql = 'kill ' + CAST(@spid AS varchar(100))

    
EXEC sp_executesql @sql
    
DELETE FROM @t WHERE spid = @spid
END

GO

EXEC sp_dboption 'old','single user','true'
GO
EXEC sp_renamedb 'old','new'
GO
EXEC sp_dboption 'new','single user','false'
GO

posted @ 2007-12-03 17:09 Goodspeed 阅读(176) | 评论 (0)编辑

2007年11月13日 #

如何从SQL Server 中取得字段说明

SQL Server 2000

你可以在企业管理器中增加字段说明,也可以使用下面的代码:

EXEC sp_addextendedproperty 
    
'MS_Description'
    
'some description'
    
'user'
    dbo, 
    
'table'
    table_name, 
    
'column'
    column_name

现在,你就可以得到通过下面的代码得到字段说明:

SELECT 
    
[Table Name] = i_s.TABLE_NAME, 
    
[Column Name] = i_s.COLUMN_NAME, 
    
[Description] = s.value 
FROM 
    INFORMATION_SCHEMA.COLUMNS i_s 
LEFT OUTER JOIN 
    sysproperties s 
ON 
    s.id 
= OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME) 
    
AND s.smallid = i_s.ORDINAL_POSITION 
    
AND s.name = 'MS_Description' 
WHERE 
    
OBJECTPROPERTY(OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME), 'IsMsShipped')=0 
    
-- AND i_s.TABLE_NAME = 'table_name' 
ORDER BY 
    i_s.TABLE_NAME, i_s.ORDINAL_POSITION

如果你只关心某一张表,那么上面的TSQL中的注释部份对你就非常有帮助。反过来就会给你所有表中的所有字段。

如果你只需要所有有说明的表,你可以把out join 改成 inner join

SELECT 
    
[Table Name] = i_s.TABLE_NAME, 
    
[Column Name] = i_s.COLUMN_NAME, 
    
[Description] = s.value 
FROM 
    INFORMATION_SCHEMA.COLUMNS i_s 
INNER JOIN 
    sysproperties s 
ON 
    s.id 
= OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME) 
    
AND s.smallid = i_s.ORDINAL_POSITION 
    
AND s.name = 'MS_Description' 
WHERE 
    
OBJECTPROPERTY(OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME), 'IsMsShipped')=0 
ORDER BY 
    i_s.TABLE_NAME, i_s.ORDINAL_POSITION

 

SQL Server 2005

在SQL Server 2005 中 sysproperties 表已被废弃,所以上面的代码都不能用。幸运的是他们还是增加了一个系统表给我们 sys.extended_properties,这张表和 sysproperties基本上相似。

SELECT  
    
[Table Name] = OBJECT_NAME(c.object_id), 
    
[Column Name] = c.name, 
    
[Description] = ex.value  
FROM  
    sys.columns c  
LEFT OUTER JOIN  
    sys.extended_properties ex  
ON  
    ex.major_id 
= c.object_id 
    
AND ex.minor_id = c.column_id  
    
AND ex.name = 'MS_Description'  
WHERE  
    
OBJECTPROPERTY(c.object_id'IsMsShipped')=0  
    
-- AND OBJECT_NAME(c.object_id) = 'your_table' 
ORDER  
    
BY OBJECT_NAME(c.object_id), c.column_id


和SQL Server 2000一样,你可以使用注释部份来返回某一张表。

Microsoft Access

在Access中,你可以使用下面的ASP代码来得到某一个字段的说明

<
    
on error resume next 
    
Set Catalog = CreateObject("ADOX.Catalog"
    Catalog.ActiveConnection 
= "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
        
"Data Source=<path>\<file>.mdb" 
 
    dsc 
= Catalog.Tables("table_name").Columns("column_name").Properties("Description").Value 
 
    
if err.number <> 0 then 
        Response.Write 
"&lt;" & err.description & "&gt;" 
    
else 
        Response.Write 
"Description = " & dsc 
    
end if 
    
Set Catalog = nothing 
%
>

posted @ 2007-11-13 13:57 Goodspeed 阅读(253) | 评论 (0)编辑

2007年7月20日 #

SELECT * 的真相: 索引覆盖(index coverage)

     摘要: SELECT *的效率很糟糕吗?当然,所有人都知道这一点,但是为什么呢?

是因为返回了太多的数据?

这是一个普遍的回答,但我不这样认为。
  阅读全文

posted @ 2007-07-20 00:25 Goodspeed 阅读(3474) | 评论 (37)编辑

2006年1月12日 #

ASP通过SMTP发邮件

 

<%
    
Const SMTPServerIP = "mail.idg-rbi.com.cn"

    
Dim strFrom, strTo,strSuject, strBody
    strFrom 
= "webmaster@idg-rbi.com.cn"
    strTo 
= "kong123@citiz.net"
    strSubject 
= "test"
    strBody 
= "test"
    
    
Dim sch, cdo, cdoConfig
    sch 
= "http://schemas.microsoft.com/cdo/configuration/"
    
Set cdoConfig = Server.CreateObject("CDO.Configuration"

    cdoConfig.Fields.Item(sch 
& "sendusing"= 2
    cdoConfig.Fields.Item(sch 
& "smtpserver"= SMTPServerIP
    cdoConfig.Fields.Item(sch 
& "smtpauthenticate"= 1
    cdoConfig.Fields.Item(sch 
& "sendusername"= strFrom
    cdoConfig.Fields.Item(sch 
& "sendpassword"= "8888"
    cdoConfig.Fields.Update

    
Set cdo =  Server.CreateObject("CDO.Message")
    
Set cdo.Configuration = cdoConfig
    cdo.From 
= strFrom
    cdo.To 
= strTo
    
    cdo.subject 
= strSubject
    cdo.TextBody 
= strBody
    
    
'session.Timeout=600

    cdo.Send

    
Set cdoConfig = Nothing
    
Set cdo = Nothing
%
>

posted @ 2006-01-12 20:15 Goodspeed 阅读(1580) | 评论 (1)编辑

2006年1月8日 #

反安装SQL server 2005

通过“添加删除程序”里并不能完全删除SQlL server。

通过下面的命令,完全反安装SQL server 2005

d:\Setup.exe /qb REMOVE=ALL INSTANCENAME=<InstanceName>

默认实例的名字是MSSQLSERVER

posted @ 2006-01-08 22:36 Goodspeed 阅读(1444) | 评论 (1)编辑

2005年12月29日 #

在IE中使用最小宽度min-width(CSS版)

min-width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但IE不认得,所以如果你用IE将博客园的窗口宽度缩到足够小,所有的字都变在一列中。

常见的解决方法就是用javascript或IE的expressions。

在这里我来尝试用css来解决这个问题

假设我们需要一个min-width为300px的div

第一步

<div style="border-left: 300px solid #fff;height:1px"></div>

将左边框设为300px,并且边框的颜色和页面的背景色一样,高度设为1,否则这个div就看不见了

第二步
在上面的div中,加入下面的代码

<div style="margin-left: -300px;position: relative; height:1px;"></div>

定位方式设为 relative(对象不可层叠),并把对象margin-left(左边的外补丁)设为-300px。
这样这个div就会回到原点,而不是从300px开始,

分析

因为border-left为300px,所以div最小也得有300px,间接实现了min-width的功能。
而由于margin-left为-300px且position:为relative,所以里面的文字不受border-left的影响

完整的代码如下

<div style="border: 1px solid red; width: 90%;">
 
<div style="border-left: 300px solid #fff;height:1px;">
  
<div style="margin-left: -300px;position: relative; height:1px;">
  宽度 90%, 最小宽度 300px;
  最小高度 300%
  
</div>
 
</div>
</div>

posted @ 2005-12-29 16:40 Goodspeed 阅读(2444) | 评论 (0)编辑

2005年12月19日 #

修改SQL server数据库中的逻辑文件名

使用 FILE_NAME 函数可以返回给定文件标识 (ID) 号的逻辑文件名

如下

下例返回 file_ID 为 1 的文件名(master 数据库文件)。

USE master
SELECT FILE_NAME(1)

当我们进行从一个备份中还原数据库时,数据库的逻辑文件名是不会改变的。

可用 ALTER DATABASE 的 MODIFY FILE 子句作为替代方式更改数据文件或日志文件的逻辑名称。

alter database 数据库名
modify 
file (
               name
=逻辑名
               ,newname
=新逻辑名
            )

事实上,上面的语句是更改了sysfiles和sysfiles1系统表中的name字段

posted @