SQL的扩展的删除与恢复

删除
use master
exec spdropextendedproc “xpcmdshell“
exec spdropextendedproc “xpdirtree“
exec spdropextendedproc “xpenumgroups“
exec spdropextendedproc “xpfixeddrives“
exec spdropextendedproc “xploginconfig“
exec spdropextendedproc “xpenumerrorlogs“
exec spdropextendedproc “xpgetfiledetails“
exec spdropextendedproc “SpOACreate“
exec spdropextendedproc “SpOADestroy“
exec spdropextendedproc “SpOAGetErrorInfo“
exec spdropextendedproc “SpOAGetProperty“
exec spdropextendedproc “SpOAMethod“
exec spdropextendedproc “SpOASetProperty“
exec spdropextendedproc “SpOAStop“
exec spdropextendedproc “Xpregaddmultistring“
exec spdropextendedproc “Xpregdeletekey“
exec spdropextendedproc “Xpregdeletevalue“
exec spdropextendedproc “Xpregenumvalues“
exec spdropextendedproc “Xpregread“
exec spdropextendedproc “Xpregremovemultistring“
exec spdropextendedproc “Xpregwrite“
drop procedure spmakewebtask
go

恢复
use master
exec spaddextendedproc xpcmdshell,“xpcmdshell.dll“
exec spaddextendedproc xpdirtree,“xpstar.dll“
exec spaddextendedproc xpenumgroups,“xplog70.dll“
exec spaddextendedproc xpfixeddrives,“xpstar.dll“
exec spaddextendedproc xploginconfig,“xplog70.dll“
exec spaddextendedproc xpenumerrorlogs,“xpstar.dll“
exec spaddextendedproc xpgetfiledetails,“xpstar.dll“
exec spaddextendedproc spOACreate,“odsole70.dll“
exec spaddextendedproc spOADestroy,“odsole70.dll“
exec spaddextendedproc spOAGetErrorInfo,“odsole70.dll“
exec spaddextendedproc spOAGetProperty,“odsole70.dll“
exec spaddextendedproc spOAMethod,“odsole70.dll“
exec spaddextendedproc spOASetProperty,“odsole70.dll“
exec spaddextendedproc spOAStop,“odsole70.dll“
exec spaddextendedproc xpregaddmultistring,“xpstar.dll“
exec spaddextendedproc xpregdeletekey,“xpstar.dll“
exec spaddextendedproc xpregdeletevalue,“xpstar.dll“
exec spaddextendedproc xpregenumvalues,“xpstar.dll“
exec spaddextendedproc xpregread,“xpstar.dll“
exec spaddextendedproc xpregremovemultistring,“xpstar.dll“
exec spaddextendedproc xpregwrite,“xpstar.dll“

posted @ 2011-09-10 11:23 xhp 阅读(126) 评论(0) 编辑
推荐两个比较实用的js优化方法,大家不妨试试:

1. Head.js, 能够使JS进行并发下载,在全部下载完成后顺序执行JS

2. RequireJS, 对Javascript进行模块化管理、并且按需加载的框架。

3. In.js

posted @ 2011-08-17 08:09 xhp 阅读(173) 评论(0) 编辑
var validateRegExp={
	decmal:"^([+-]?)\\d*\\.\\d+$",	//浮点数
	decmal1: "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$",	//正浮点数
	decmal2: "^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$",	//负浮点数
	decmal3: "^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$",	//浮点数
	decmal4: "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$",	//非负浮点数(正浮点数 + 0)
	decmal5: "^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$",	//非正浮点数(负浮点数 + 0)
	intege: "^-?[1-9]\\d*$",	//整数
	intege1: "^[1-9]\\d*$",	//正整数
	intege2: "^-[1-9]\\d*$",	//负整数
	num: "^([+-]?)\\d*\\.?\\d+$",	//数字
	num1: "^[1-9]\\d*|0$",	//正数(正整数 + 0)
	num2: "^-[1-9]\\d*|0$",	//负数(负整数 + 0)		
	ascii: "^[\\x00-\\xFF]+$",	//仅ACSII字符
	chinese: "^[\\u4e00-\\u9fa5]+$",	//仅中文
	color: "^[a-fA-F0-9]{6}$",	//颜色
	date: "^\\d{4}(\\-|\\/|\.)\\d{1,2}\\1\\d{1,2}$",	//日期
	email: "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$",	//邮件
	idcard: "^[1-9]([0-9]{14}|[0-9]{17})$",	//身份证
	ip4: "^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$",	//ip地址
	letter: "^[A-Za-z]+$",	//字母
	letter_l: "^[a-z]+$",	//小写字母
	letter_u: "^[A-Z]+$",	//大写字母
	mobile: "0?(13|15)[0-9]{9}$",	//手机
	notempty: "^\\S+$",	//非空
	password: "^[A-Za-z0-9_-]+$",	//密码
	picture: "(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$",	//图片
	qq: "^[1-9]*[1-9][0-9]*$",	//QQ号码
	rar: "(.*)\\.(rar|zip|7zip|tgz)$",	//压缩文件
	tel: "^[0-9\-()()]{7,18}$",	//电话号码的函数(包括验证国内区号,国际区号,分机号)
	url: "^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$",	//url
	username: "^[A-Za-z0-9_\\-\\u4e00-\\u9fa5]+$",	//用户名
	deptname: "^[A-Za-z0-9_()()\\-\\u4e00-\\u9fa5]+$",	//单位名
	zipcode: "^\\d{6}$",	//邮编
	realname:"^[A-Za-z0-9\\u4e00-\\u9fa5]+$",  // 真实姓名
	companyname:"^[A-Za-z0-9_()()\\-\\u4e00-\\u9fa5]+$",
	companyaddr:"^[A-Za-z0-9_()()\\#\\-\\u4e00-\\u9fa5]+$",
	companysite:"^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&#=]*)?$"
};

//主函数
(function($) {
    $.fn.jdValidate = function(option, callback, def) {
        var ele = this;
        var id = ele.attr("id");
        var type = ele.attr("type");
        var rel = ele.attr("rel");
        var _onFocus = $("#" + id + validateSettings.onFocus.container);
        var _succeed = $("#" + id + validateSettings.succeed.container);
        var _isNull = $("#" + id + validateSettings.isNull.container);
        var _error = $("#" + id + validateSettings.error.container);
        if (def == true) {
            var str = ele.val();
            var tag = ele.attr("sta");
            if (str == "" || str == "-1") {
                validateSettings.isNull.run({
                    prompts: option,
                    element: ele,
                    isNullEle: _isNull,
                    succeedEle: _succeed
                }, option.isNull);
            } else if (tag == 1 || tag == 2) {
                return;
            } else {
                callback({
                    prompts: option,
                    element: ele,
                    value: str,
                    errorEle: _error,
                    succeedEle: _succeed
                });
            }
        } else {
            if (typeof def == "string") {
                ele.val(def);
            }
            if (type == "checkbox" || type == "radio") {
                if (ele.attr("checked") == true) {
                    ele.attr("sta", validateSettings.succeed.state);
                }
            }
            switch (type) {
                case "text":
                case "password":
                    ele.bind("focus", function() {
                        var str = ele.val();
                        if (str == def) {
                            ele.val("");
                        }
                        validateSettings.onFocus.run({
                            prompts: option,
                            element: ele,
                            value: str,
                            onFocusEle: _onFocus,
                            succeedEle: _succeed
                        }, option.onFocus);
                    })
					.bind("blur", function() {
					    var str = ele.val();
					    if (str == "") {
					        ele.val(def);
					    }
					    if (validateRules.isNull(str)) {
					        validateSettings.isNull.run({
					            prompts: option,
					            element: ele,
					            value: str,
					            isNullEle: _isNull,
					            succeedEle: _succeed
					        }, "");
					    } else {
					        callback({
					            prompts: option,
					            element: ele,
					            value: str,
					            errorEle: _error,
					            isNullEle: _isNull,
					            succeedEle: _succeed
					        });
					    }
					});
                    break;
                default:
                    if (rel && rel == "select") {
                        ele.bind("change", function() {
                            var str = ele.val();
                            callback({
                                prompts: option,
                                element: ele,
                                value: str,
                                errorEle: _error,
                                isNullEle: _isNull,
                                succeedEle: _succeed
                            });
                        })
                    } else {
                        ele.bind("click", function() {
                            callback({
                                prompts: option,
                                element: ele,
                                errorEle: _error,
                                isNullEle: _isNull,
                                succeedEle: _succeed
                            });
                        })
                    }
                    break;
            }
        }
    }
})(jQuery);

//配置
var validateSettings = {
    onFocus: {
        state: null,
        container: "_error",
        style: "focus",
        run: function(option, str) {
            if (!validateRules.checkType(option.element)) {
                option.element.removeClass(validateSettings.INPUT_style2).addClass(validateSettings.INPUT_style1);
            }
            option.onFocusEle.removeClass().addClass(validateSettings.onFocus.style).html(str);
        }
    },
    isNull: {
        state: 0,
        container: "_error",
        style: "null",
        run: function(option, str) {
            option.element.attr("sta", 0);
            if (!validateRules.checkType(option.element)) {
                if (str != "") {
                    option.element.removeClass(validateSettings.INPUT_style1).addClass(validateSettings.INPUT_style2);
                } else {
                    option.element.removeClass(validateSettings.INPUT_style2).removeClass(validateSettings.INPUT_style1);
                }
            }
            option.succeedEle.removeClass(validateSettings.succeed.style);
            option.isNullEle.removeClass().addClass(validateSettings.isNull.style).html(str);
        }
    },
    error: {
        state: 1,
        container: "_error",
        style: "error",
        run: function(option, str) {
            option.element.attr("sta", 1);
            if (!validateRules.checkType(option.element)) {
                option.element.removeClass(validateSettings.INPUT_style1).addClass(validateSettings.INPUT_style2);
            }
            option.succeedEle.removeClass(validateSettings.succeed.style);
            option.errorEle.removeClass().addClass(validateSettings.error.style).html(str);
        }
    },
    succeed: {
        state: 2,
        container: "_succeed",
        style: "succeed",
        run: function(option) {
            option.element.attr("sta", 2);
            option.errorEle.empty();
            if (!validateRules.checkType(option.element)) {
                option.element.removeClass(validateSettings.INPUT_style1).removeClass(validateSettings.INPUT_style2);
            }
            if (option.element.attr("id") == "schoolinput" && $("#schoolid").val() == "") {
                return;
            }
            option.succeedEle.addClass(validateSettings.succeed.style);
        }
    },
    INPUT_style1: "highlight1",
    INPUT_style2: "highlight2"

};

//验证规则
var validateRules={
	isNull:function(str){
		return (str==""||typeof str!="string");
	},
	betweenLength:function(str,_min,_max){
		return (str.length>=_min&&str.length<=_max);
	},
	isUid:function(str){
		return new RegExp(validateRegExp.username).test(str);
	},
	isPwd:function(str){
		return new RegExp(validateRegExp.password).test(str);
	},
	isPwd2:function(str1,str2){
		return (str1==str2);
	},
	isEmail:function(str){
		return new RegExp(validateRegExp.email).test(str);
	},
	isTel:function(str){
		return new RegExp(validateRegExp.tel).test(str);
	},
	isMobile:function(str){
		return new RegExp(validateRegExp.mobile).test(str);
	},
	checkType:function(element){
		return (element.attr("type")=="checkbox"||element.attr("type")=="radio"||element.attr("rel")=="select");
	},
	isChinese:function(str){
		return new RegExp(validateRegExp.chinese).test(str);
	},
	isRealName:function(str){
		return new RegExp(validateRegExp.realname).test(str);
	},
	isDeptname:function(str){
	    return new RegExp(validateRegExp.deptname).test(str);
	},
	isCompanyname:function(str){
	    return new RegExp(validateRegExp.companyname).test(str);
	},
	isCompanyaddr:function(str){
	    return new RegExp(validateRegExp.companyaddr).test(str);
	},
	isCompanysite:function(str){
	    return new RegExp(validateRegExp.companysite).test(str);
	}
};
//验证文本
var validatePrompt={
	username:{
		onFocus:"4-20位字符,可由中文、英文、数字及“_”、“-”组成",
		succeed:"",
		isNull:"请输入用户名",
		error:{
			beUsed:"该用户名已被使用,请使用其它用户名注册,如果您是"{1}",请<a href='https://passport.360buy.com/new/login.aspx' class='flk13'>登录</a>",
			badLength:"用户名长度只能在4-20位字符之间",
			badFormat:"用户名只能由中文、英文、数字及“_”、“-”组成"
		}
	},
	pwd:{
		onFocus:"6-16位字符,可由英文、数字及“_”、“-”组成",
		succeed:"",
		isNull:"请输入密码",
		error:{
			badLength:"密码长度只能在6-16位字符之间",
			badFormat:"密码只能由英文、数字及“_”、“-”组成"
		}
	},
	pwd2:{
		onFocus:"请再次输入密码",
		succeed:"",
		isNull:"请输入密码",
		error:{
			badLength:"密码长度只能在6-16位字符之间",
			badFormat2:"两次输入密码不一致",
			badFormat1:"密码只能由英文、数字及“_”、“-”组成"
		}
	},
	mail:{
		onFocus:"请输入常用的邮箱,将用来找回密码、接收订单通知等",
		succeed:"",
		isNull:"请输入邮箱",
		error:{
			beUsed:"该邮箱已被使用,请更换其它邮箱,或使用该邮箱<a href='http://passport.360buy.com/retrievepassword.aspx' class='flk13'>找回密码</a>",
			badFormat:"邮箱格式不正确",
			badLength:"您填写的邮箱过长,邮件地址只能在50个字符以内"
		}
	},
	authcode:{
		onFocus:"请输入图片中的字符,不区分大小写",
		succeed:"",
		isNull:"请输入验证码",
		error:"验证码错误"
	},
	protocol:{
		onFocus:"",
		succeed:"",
		isNull:"请先阅读并同意《京东商城用户协议》",
		error:""
	},
	referrer:{
		onFocus:"如您注册并完成订单,推荐人有机会获得积分",
		succeed:"",
		isNull:"",
		error:""
},
    schoolinput: {
        onFocus: "您可以用简拼、全拼、中文进行校名模糊查找",
        succeed: "",
        isNull: "请填选学校名称",
        error: "请填选学校名称"
    },
	empty:{
		onFocus:"",
		succeed:"",
		isNull:"",
		error:""
	}
};

var nameold,emailold,authcodeold;
var namestate=false,emailstate=false,authcodestate=false;
//回调函数
var validateFunction={
	username:function(option){
		var format=validateRules.isUid(option.value);
        var length=validateRules.betweenLength(option.value.replace(/[^\x00-\xff]/g,"**"),4,20);
		if(!length&&format){
			validateSettings.error.run(option,option.prompts.error.badLength);
		}
		else if(!length&&!format){
			validateSettings.error.run(option,option.prompts.error.badFormat);
		}
		else if(length&&!format){
			validateSettings.error.run(option,option.prompts.error.badFormat);
		}
		else{ 
	        if(!namestate||nameold!=option.value)
	        {
	            if(nameold!=option.value)
	            {
	                nameold=option.value;
	                option.errorEle.html("<span style='color:#999'>检验中……</span>");
		            $.getJSON("AjaxService.aspx?action=CheckUnicknme&uid="+escape(option.value)+"&r="+Math.random(),function(date){
			        if(date.success==0){
				        validateSettings.succeed.run(option);
				        namestate=true;
			        }else{
				        validateSettings.error.run(option,option.prompts.error.beUsed.replace("{1}",option.value));
				        namestate=false;
			        }
		            })
		        }
		        else
		        {
		            validateSettings.error.run(option,option.prompts.error.beUsed.replace("{1}",option.value));
				    namestate=false;
		        }
		    }
		    else
		    {
		         validateSettings.succeed.run(option);
		    }
		}
	},
	pwd:function(option){
		var str1=option.value;
		var str2=$("#pwd2").val();
		var format=validateRules.isPwd(option.value);
		var length=validateRules.betweenLength(option.value,6,16);
		$("#pwdstrength").hide();
		if(!length&&format){
			validateSettings.error.run(option,option.prompts.error.badLength);
		}
		else if(!length&&!format){
			validateSettings.error.run(option,option.prompts.error.badFormat);
		}
		else if(length&&!format){
			validateSettings.error.run(option,option.prompts.error.badFormat);
		}
		else{
			validateSettings.succeed.run(option);	
			validateFunction.pwdstrength();
		}
		if (str2!=""){
			$("#pwd2").jdValidate(validatePrompt.pwd2,validateFunction.pwd2,true);
		}
	},
	pwd2:function(option){
		var str1=option.value;
		var str2=$("#pwd").val();
		var length=validateRules.betweenLength(option.value,6,16);
		var format2=validateRules.isPwd2(str1,str2);
		var format1=validateRules.isPwd(str1);
		if (!length){
			validateSettings.error.run(option,option.prompts.error.badLength);
		}else{
			if (!format1){
				validateSettings.error.run(option,option.prompts.error.badFormat1);
			}else{
				if(!format2){
					validateSettings.error.run(option,option.prompts.error.badFormat2);
				}
				else{
					validateSettings.succeed.run(option);
				}
			}
		}
	},
	mail:function(option){
		var format=validateRules.isEmail(option.value);
		var format2=validateRules.betweenLength(option.value,0,50);
		if(!format){
			validateSettings.error.run(option,option.prompts.error.badFormat);
		}else{
			if (!format2){
				validateSettings.error.run(option,option.prompts.error.badLength);
			}else{
		        if(!emailstate||emailold!=option.value)
		        {
		            if(emailold!=option.value)
		            {
		                emailold=option.value;
		                option.errorEle.html("<span style='color:#999'>检验中……</span>");
		                $.getJSON("AjaxService.aspx?action=CheckUemail&str="+escape(option.value)+"&r="+Math.random(),function(date){
			                if(date.success==0){
				                validateSettings.succeed.run(option);
				                emailstate=true;
			                }else{
				                validateSettings.error.run(option,option.prompts.error.beUsed);
				                emailstate=false;
			                }
		                })
		            }
		            else
		            {
		                validateSettings.error.run(option,option.prompts.error.beUsed);
				        emailstate=false;
		            }
		        }
		        else
		        {
		           validateSettings.succeed.run(option);
		        }
 			}
		}
	},
	referrer:function(option){
		var bool=validateRules.isNull(option.value);
		if (bool){
			option.element.val("可不填");
			return;
		}else{
			validateSettings.succeed.run(option);
		}
},
schoolinput: function(option) {
    var bool = validateRules.isNull(option.value);
    if (bool) {
        validateSettings.error.run(option, option.prompts.error);
        return;
    } else {
        validateSettings.succeed.run(option);
    }
},
	authcode:function(option){
	    if(!authcodestate||authcodeold!=option.value)
	    {
	        if(authcodeold!=option.value)
	        {
	            authcodeold=option.value;
	            option.errorEle.html("<span style='color:#999'>检验中……</span>");
	            var uuid=$("#JD_Verification1").attr("src").split("&uid=")[1].split("&")[0];
		        $.getJSON("AjaxService.aspx?action=CheckAuthcode&str="+escape(option.value)+"&r="+Math.random()+"&uuid="+uuid,function(date){
			        if (date.success==0){
				        validateSettings.succeed.run(option);
				        authcodestate=true;
			        }else{
				        validateSettings.error.run(option,option.prompts.error);
				        authcodestate=false;
			        }
		        })
		    }
		    else
		    {
		         validateSettings.error.run(option,option.prompts.error);
				 authcodestate=false;
		    }
		}
		else
		{
		     validateSettings.succeed.run(option);
		}
	},
	protocol:function(option){
		if (option.element.attr("checked")==true){
			option.element.attr("sta",validateSettings.succeed.state);
			option.errorEle.html("");
		}else{
			option.element.attr("sta",validateSettings.isNull.state);
			option.succeedEle.removeClass(validateSettings.succeed.style);
		}
	},
	pwdstrength:function(){		
		var element=$("#pwdstrength");
		var value=$("#pwd").val();
		var strength = 0;
		if (value.length>=6&&validateRules.isPwd(value)){
			$("#pwd_error").empty();
			element.show();
			if (/\d/i.test(value)){
				strength += 1;
			}
			if (/[a-z]/i.test(value)){
				strength += 1;
			}
			if (/[-_]/i.test(value)){
				strength += 1;
			}
			switch (strength){
				case 1:
					element.removeClass().addClass("strengthA");
					break;
				case 2:
					element.removeClass().addClass("strengthB");
					break;
				case 3:
					element.removeClass().addClass("strengthC");
					break;
				default:
					break;
			}
		}else{
			element.hide();
		}
	},
	checkGroup:function(elements){
		for (var i=0;i<elements.length;i++){
			if (elements[i].checked){
				return true;
			}
		}
		return false;
	},
	checkSelectGroup:function(elements){
		for (var i=0;i<elements.length;i++){
			if (elements[i].value==-1){
				return false;
			}			
		}
		return true;
	},
	showPassword:function(type){
		var v1=$("#pwd").val(),s1=$("#pwd").attr("sta"),c1=document.getElementById("pwd").className,t1=$("#pwd").attr("tabindex");
		var v2=$("#pwd2").val(),s2=$("#pwd2").attr("sta"),c2=document.getElementById("pwd2").className,t2=$("#pwd2").attr("tabindex");
		var P1=$("<input type='"+ type +"' value='" + v1 + "' sta='"+ s1 +"' class='"+ c1 +"' id='pwd' name='pwd' tabindex='"+ t1 +"'/>");
		$("#pwd").after(P1).remove();
		$("#pwd").bind("keyup",function(){
			validateFunction.pwdstrength();
		}).jdValidate(validatePrompt.pwd,validateFunction.pwd)
		var P2=$("<input type='"+ type +"' value='" + v2 + "' sta='"+ s2 +"' class='"+ c2 +"' id='pwd2' name='pwd2' tabindex='"+ t2 +"'/>");
		$("#pwd2").after(P2).remove();
		$("#pwd2").jdValidate(validatePrompt.pwd2,validateFunction.pwd2);
	},
	FORM_submit:function(elements){
		var bool=true;
		for (var i=0;i<elements.length;i++){
			if ($(elements[i]).attr("sta")==2){
				bool=true;
			}else{
				bool=false;
				break;
			}
		}
		return bool;
	}
};

posted @ 2011-06-17 09:02 xhp 阅读(190) 评论(3) 编辑
MultipleActiveResultSets可以使数据库连接复用。这样就不怕数据库的连接资源被耗尽了。使用方法很简单,只需要把它加到数据的连接字符串中即可。

例如:server=(local);Integrated Security = true;database=AdventureWorks;MultipleActiveResultSets=true;

测试用例:

    using System;  
    using System.Threading;  
    using System.Data.SqlClient;  
    using System.Configuration;  
      
    namespace ConsoleApplication1  
    {  
        public class Example  
        {  
            public static void Main()  
            {  
            SqlConnection sql1 = new SqlConnection("server=(local);Integrated Security = true;database=AdventureWorks;");  
                sql1.Open();  
                SqlCommand comm1 = new SqlCommand();  
                comm1.CommandText = "select 1";  
                comm1.CommandType = System.Data.CommandType.Text;  
            comm1.Connection = sql1;  
                comm1.ExecuteNonQuery();  
                sql1.Close();  
                Console.ReadLine();  
            }  
        }  
    }  

编译后,打开bin\debug\ConsoleApplication1.exe。

在SQL Server 2008 Management Studio中打开一个新窗口,输入sp_who

按F5执行,可以发现已经有一个用户连接到AdventureWorks数据库了。

再打开一个ConsoleApplication1.exe,发现又会多一个用户连接到AdventureWorks数据库。

现在把程序的连接字符串改为server=(local);Integrated Security = true;database=AdventureWorks;MultipleActiveResultSets=true;

按上面的顺序执行,发现不管打开多少个ConsoleApplication1.exe,数据库中没有用户或只有一个用户连接着AdventureWorks数据库。

这就是数据库连接复用的好处了。

关于数据库连接字符串的其它用法,参见:

http://blog.csdn.net/tjvictor/archive/2009/03/19/4004277.aspx

posted @ 2011-06-03 15:11 xhp 阅读(32) 评论(1) 编辑

ASP.NET使用新增的Page.ClientScript属性在ASP.NET页面上注册和使用Javascript函数.

注意: .NET Framewrok 1.0/1.1中的Page.RegisterStartupScriptPage.RegisterClientScriptBlock方法已经被弃用,这两个用于注册脚本的方法需要一组键/值对,由于方法比较复杂,很可能发生键名冲突.Page.ClientScript属性把所有的脚本注册都放在一起,使代码不容易出错

<1>使用Page.ClientScript.RegisterClientScriptBlock(注册到页面顶部)

两种构建方式:

1).RegisterClientScriptBlock(Type type,String key,String script); //类型,键,脚本

2).RegisterClientScriptBlock(Type type,String key,String script,bool addScriptTags); //类型,键,脚本,是否添加脚本标记

例子:

<!--.aspx页面-->

<asp:Button ID="btnScript" runat="server" OnClick="btnScript_Click" Text="点击输出javascript" />

 

<!--.aspx.cs页面-->

protected void btnScript_Click(object sender, EventArgs e)
{
        MessageBox.Show(this,"myScript", "HelloWorld!!!");//Page对象,键名,消息.
}

 

/// <summary>
/// 模拟Winform的MessageBox.Show();
/// </summary>
public class MessageBox
{
    public static void Show(System.Web.UI.Page page,string key, string Message)
    {
        string myScript = @"alert('" + Message + "');";
        if (!page.ClientScript.IsClientScriptBlockRegistered(key))
        {
            page.ClientScript.RegisterClientScriptBlock(page.GetType(), key, myScript, true);
        }
    }
}

<2>使用Page.ClientScript.RegisterStartupScript(注册到页面底部)

 

两种构建方式:

1).RegisterStartupScript(Type type,String key,String script); //类型,键,脚本

2).RegisterStartupScript(Type type,String key,String script,bool addScriptTags); //类型,键,脚本,是否添加脚本标记

注意:这两种注册方法虽然只是注册部位不一样,但是区别很大.如果页面上有一些处理控件的JavaScript,应该使用RegisterStartupScript

例子:

<!--.aspx页面-->

<asp:Button ID="btnScript" runat="server" OnClick="btnScript_Click" Text="点击输出javascript" />

<asp:TextBox ID="txtMessage" runat="server">Hello ASP.NET!</asp:TextBox>

//错误示范

//<!--.aspx.cs页面(使用RegisterClientScriptBlock报错,找不到指定控件的ID) -->

//protected void btnScript_Click(object sender, EventArgs e)
//{
//    string myScript = @"alert(document.forms[0]['txtMessage'].value);";
//    if (! Page.ClientScript.IsClientScriptBlockRegistered("MyScript"))
//    {
//        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript", myScript, true);
//    }
//}

//正确示范

<!--.aspx.cs页面(应该使用RegisterStartupScript) -->

protected void btnScript_Click(object sender, EventArgs e)
{
    string myScript = @"alert(document.forms[0]['txtMessage'].value);";
    if (! Page.ClientScript.IsStartupScriptRegistered("MyScript"))
    {
        Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", myScript, true);
    }
}

<3>使用Page.ClientScript.RegisterClientScriptInclude(引用.js文件)

//C#中:

string myScript = "myJsCode.js";

Page.ClientScript.RegisterClientScriptInclude("myKey",myScript);

//这会在ASP.NET中生成以下代码

<script scr="myJsCode.js" type="text/javascript"></script>

  

  

<4>使用回调功能(Ajax效果)

步骤:

1)在ASP.NET建立<input type='button' .../>

2)写入调用javscript

3)在.aspx.cs页面中实现ICallBackEventHandler接口

4)实现接口的两个方法:GetCallbackResult,RaiseCallbackEvent

5)在Page_Load里面注册脚本

 

例子:

<!-- aspx页面 -->

<script language="javascript" type="text/javascript">
        function GetNumber()
        {
            UseCallBack(); //回调函数
        }

        //用来接受返回信息并显示
        function GetRandom(TextBox1, content)
        {
            document.forms[0].txtMessage.value = TextBox1;
        }
</script>

 

 

<asp:TextBox ID="txtMessage" runat="server"></asp:TextBox>
<input id="btn" type="button" value="GetRandom" onclick="GetNumber()" />

 注意:<asp:button>不能在这里使用

 

<!-- aspx.cs页面 -->

 public partial class CallBackPage: System.Web.UI.Page,System.Web.UI.ICallbackEventHandler

{

    private string _callbackResult = null;
    protected void Page_Load(object sender, EventArgs e)
    {

        //GetRandom是方法名, 不需要括号()
        string reference = Page.ClientScript.GetCallbackEventReference(this, "arg", "GetRandom", "content");
        string myScript = @"function UseCallBack(arg,content)" + "{" + reference + ";" + "}";
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "key", myScript, true);
    }

    #region ICallbackEventHandler 成员(实现接口)

    string ICallbackEventHandler.GetCallbackResult()
    {
        return _callbackResult;
    }

    void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
    {
        Random random = new Random();
        _callbackResult = random.Next().ToString();
    }
    #endregion

}

 

Page_Load,GetCallbackResult() 写法趋于固定, 只需要换方法名即可.

RaiseCallbackEvent()方法是用来处理需要显示的数据信息. 一般调用连接数据库返回信息.

posted @ 2011-02-16 13:05 xhp 阅读(461) 评论(0) 编辑
摘要: 单击"开始"、"运行"-->"Regedit"找到   "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Cur rentVersion",   在右侧窗口中找到名为"ProgramFilesDir"的字符串,就是它记录了ProgramFiles的路径,   双击把数值由"%SystemDrive%\Program Files"修改为"D:\Program Files",   确定后退出注册表就可以了.   下回安装软件的默认路径即为:"D:\Program Files"。阅读全文
posted @ 2011-01-19 11:09 xhp 阅读(246) 评论(0) 编辑
摘要: [代码]阅读全文
posted @ 2011-01-17 13:09 xhp 阅读(185) 评论(0) 编辑
摘要: 方法一:在配置数据同步的时候,要求相互同步的两台机器的数据库必须通过默认实例名称进行连接。如果你的默认实例已经删掉了,在当前实例上进行新建发布操作时候,会提示你: “由于未在SqlServer的此实例上安装复制组件,Microsoft SQL server 无法访问这些组件,请参阅SQL Server……” 注意下面还有一个附加的提示,它的意思就是说默认实例名和当前的实例名称不一致。其实这个才是导致不能复制的主要原因。把它解决了,你就可以进行复制了。 产生的原因是因为安装完SqlServer之后,又修改了计算机的名称。 解决“SqlServer复制需要有实际的服务器名称才能连接到服务器。不支持阅读全文
posted @ 2011-01-12 09:21 xhp 阅读(357) 评论(0) 编辑
摘要: 获取DataGridView的选定行的第一列的Value阅读全文
posted @ 2010-12-15 15:01 xhp 阅读(17) 评论(0) 编辑
摘要: [代码]select * from debt where Studentnumber in(select Studentnumber from debt group by Studentnumber having COUNT(Studentnumber) >1)select * from debt where Studentnumber in(select Studentnumber fro...阅读全文
posted @ 2010-12-01 10:39 xhp 阅读(41) 评论(0) 编辑