my.money全自动挂机赚my挂机是真的吗假的?要398激活my挂机是真的吗吗,有没有谁用过。。。

问答|《中国有嘻哈》里面有哪些有语病的英文歌词是需要注意的?
最近入坑,狂追《中国有嘻哈》,看得不亦乐乎。
不论是催泪的700
还是瞬间被Gai爷圈粉的凡人歌
都让人欲罢不能。
但看多了,发现一个问题:
每当选手开始飙英文的时候,都会不由自主的捏一把冷汗。
因为,很多英文歌词,实在是语病百出,让人尴尬的不行,有时候甚至到了看了字幕都不知道什么意思的地步。
下面举几个例子,说一下《中国有嘻哈》里那些让人尴尬的英文歌词。
先说一下语病的几个级别。
瑕不掩瑜级:很小的语法问题,可能是少了一个a,或者多了一个the,看上去别扭点,但不影响对歌词的表达
小尴小尬级:比较明显的语法问题,语法结构多了或者少了一个大块,影响到句意,但大体仍然能明白意思
你到底想说啥级:整个句子有问题,不光语法不通,根本就不知道歌者想说什么。
那么我们一级一级的来扒。
I. 瑕不掩瑜级别
1. 第七期《700》李大奔
大奔的一句:I be the real man.
正确的应该是I willbe the real man.或者I’llbe the real man.
2. 第七期《遥远不远》黄旭
黄旭唱的:Life’s struggle don’t stop.
听过宋岳庭的歌的都知道,少了个a。然后don’t stop其实是针对struggle的一个转折,所以前面最好加个but
所以应该是:Life’s astruggle, butdon’t stop
3. 第八期 《Fresh One》PG One
PG One唱的是:My flow so fresh, my swag so fresh.
作为学英语时被is/was折磨的想死的人,真想冲到台上帮他多唱个is:
My flow isso fresh, my swag isso fresh.
4.第八期《不信命》鬼卞
鬼卞唱的:Clean out all of my troubles.
这句没什么大语病,主要是前面说了“早已”,那么这个clean out肯定是已经完成了,应该是Cleaned out。
(Eminem有首歌就叫做Cleanin out my closet)
另外但那个of其实可以去掉,更爽快一些:
Cleaned outall my troubles
5. 第九期《大一岁》TT
TT唱的:I say everyday my birthday.
加个is就完美了:I say everyday is my birthday.
6. 第九期《After Journey》艾福杰尼
这首歌的英文实在槽点很多。
艾福杰尼唱:I got headache
中文说“我头疼”没问题,英语里需要加个a啊大哥:
I got aheadache.
然后开头还唱过:start with the simple knock knock knock
意思应该是“从简单的敲门声开始”,这儿the换成a要好一些:
Start with asimple knock knock knock.
之后有:please drive little bit slow
我知道你想说“请开慢一点。”
但是a去哪里啦a啊,而且那个slow应该是加er了啊大哥:
Please drive alittle bit slower.
除了这些一级槽点外,杰尼的这首本名歌还有大量让人摸不着头脑的英文歌词,好奇的可以直接跳过小尴小尬级别,直接到“你到底想说啥”级别最后看。
II. 小尴小尬级别:
1. 第七期《700》胡旭
胡旭:Let’s hands up
这个是很明显的错误,虽然并不很影响我们理解胡爷大喊“举起你的双手”的意思,
但为啥就不能按照Jin爷唱的来说捏:Put your hands up.
2.第八期《毕业》小白
小白的:Do wanna do
上下文能看出来,小白想说“做我想做的”,但歌词就缺了那个“what I”
正确的:Do what I wanna do
其实有Jin在的歌里出现语病还是挺让人惊讶的。
3.第八期《不信命》李大奔
大奔:It’s welcome teammate
都明白大奔想说:来欢迎我的队友。但您缺了一个“let’s”和一个“my”
正确的:Let’swelcomemy teammate.
III. 你到底想说啥级别:
1.第七期《700》李大奔
大奔:Be the hall the fame
就原文来看,这几个词没法理解,只能是拆成两段理解Be the hall/ the fame-成为堂子成为名气。
但这么翻译也不对头:你一个大活人怎么成为一个hall了?
看歌词的意思应该是说要“进入名人堂”
所以按照一贯说法,应该是:Be in the hall of fame
2. 第八期《Street Fighter》艾福杰尼
艾福杰尼:Let me rap like that fight that kid
前半句我能理解:让我也这么(说)唱。
但后半句的fight that kid我就迷惑了。先不说上下文根本不接,仅仅从意思上就难以解释:是说要“揍那个孩子”?还是说排比上半句,要“也那么奋斗”?
如果说是要“揍那个孩子”,至少这句话应该是:Let me rap like that and fight that kid(两句之间没有排比关系,你至少加个and吧)。
我觉得杰尼的意思更多的是想说“也那么奋斗”,那么这句话应该是:Let me rap like that, fight like that.
3. 第八期《Street Fighter》艾福杰尼
艾福杰尼:every time when I get a new track, can of make you fool.
前半句还ok – “我每做一首新曲”,后半句 – “can of make you fool”……什么鬼?
这儿只能个人猜测了,我觉得他是想说:“我的每首新曲都让你看起来像个傻子”。
所以根据这个来唱,那至少应该是
Every time I have a new track, I’ll make you a fool.
(实在是不懂can of make you fool是什么鬼……当时看了半天,然后脑子里突然蹦出一句神译:can of make you fool - 拿你做豆腐。不知道杰尼原意是不是这个意思。)
4. 第八期《Street Fighter》Gai
Gai:you gotta be five four five four
这句话的直接翻译是:你需要做五四,五四。
所以说……GAI爷在号召我们做新青年?不可能吧。
我严重怀疑后期把歌词打错了,感觉five four在这儿应该是fight for。
而这句话应该是:you gotta be what you fight for.(你应该成为你为之奋斗的样子)
5. 第九期《After Journey》艾福杰尼
接续之前说的,这首歌英文槽点太多,太无厘头的在这儿统一罗列了。
第一个,杰尼唱了:What the world.
如果不是看中文翻译,还以为他是想骂人,因为这是典型的what the fuck/hell/heck句式.
但看了翻译之后,才知道他想说“世界怎么了?”
如果是这个意思,那么 黑眼豆豆(Black Eyed Peas)的“Where is the Love”里的第一句也是“世界怎么了”,至少参考一下人家的句式好吗:
What’s wrong with the world?
第二个,杰尼又唱了:Who support ignored
只凭字面理解(就不说语病了),勉强能理解成:谁在支持哪些被无视的人。
但官方翻译的意思是:谁来管管,都在无视。
那这句话请至少加上can和the啊:who can support the ignored?
一词之差,意思完全不同的说。
第三个,杰尼同学唱到:I hope not so far
一开始我以为是“我希望在不远处。”
如果这样的话,这句话简单的改成:I hope that not so far away. 就行了
但看了一下官方字幕翻译是:我祈求终点在不远处。
可是全句都没有“终点”这个词,然后后面的歌词直接飞到别的地方去了。
所以按照官翻的话,这句话需要加词:
I hope that my destination is not so far away.
完全面目全非了…
第四个,关于钱,杰尼唱到:make the money make the rain.
官翻是“大把赚钱大把花”。
这里rain应该是杰尼借的一个美国俚语典故。
但问题是,俚语典故的用法是:make it rain (指花钱大方的像下雨一样)。而按照杰尼the rain的唱法,这句的翻译应该是:大把赚钱去造雨。
感觉杰尼应该不是在号召环保,所以这句歌词应该这么写啊:
Make your money and make it rain.
第五个,杰尼唱:over the game.
欧美有首著名歌曲over the rainbow – “彩虹之上”。
所以这句词应该理解成“游戏之上”?
但官翻是“游戏结束”。
哦,所以杰尼你其实是想唱:
第六个,杰尼同学唱到:eat the candy fire the pain.
针对这句歌词,我说一个故事。
我把这首歌放给一个米国朋友听(完全不懂中文),哥们儿听到这一句,问我:“Does he have hemorrholds?”(这哥们儿是不是有痔疮?)
我当时一口水喷了出去,问他为啥这样说。
哥们儿解释说:这歌词说他吃了糖(eat the candy)然后释放出一堆痛苦(fire the pain)。人吃完要拉,他说拉得很痛苦,那就是有痔疮了?
我竟无言以对。
所以这句歌词怎么修改大家去琢磨吧,我没招了。
综上所写,可以看出艾福杰尼的《after journey》当之无愧的是英文槽点之王。就整首歌来说其实是挺不错的,很正能量也很燃,但是满屏不知所云的英文真的是让人尴尬得不行。
个人觉得,虽然说唱来自美国,但并不表示说你一定就需要在里面塞英文。如果要塞英文也可以,但一定要用词清晰尽量别有歧义。说唱是以语言表达情感的艺术形式,如果你连所用语言的基本规则都弄错,那就不是说唱,而是瞎唱了。
嗯,读到这儿不容易,欢迎来我的公号看更多英美文化的文章和手绘,或者有意见来喷也行~
公号ID:sanliunine
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点https://blog.csdn.net/
https://static-blog.csdn.net/images/logo.gif
https://blog.csdn.net/iteye_19707
https://blog.csdn.net/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
  我们讨论的主题CSS网页布局,最令大家头疼的问题就是浏览器兼容性,虽然div-css.net介绍过很多这方向的知识,但依然让很多开发人员晕头转向,今天的这篇文章,将列出css和javascript在IE和Firefox中二十三个不同点,希望对大家的学习有所帮助。
一、document.formName.item("itemName") 问题   问题说明:IE下,可以使用 document.formName.item("itemName") 或 document.formName.elements ["elementName"];Firefox下,只能使用document.formName.elements["elementName"]。  解决方法:统一使用document.formName.elements["elementName"]。
二、集合类对象问题  问题说明:IE下,可以使用 () 或 [] 获取集合类对象;Firefox下,只能使用 [ ]获取集合类对象。解决方法:统一使用 [] 获取集合类对象。
三、自定义属性问题  问题说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用 getAttribute() 获取自定义属性;Firefox下,只能使用 getAttribute() 获取自定义属性。  解决方法:统一通过 getAttribute() 获取自定义属性。
四、eval("idName")问题  问题说明:IE下,可以使用 eval("idName") 或 getElementById("idName") 来取得 id 为 idName 的HTML对象;Firefox下,只能使用 getElementById("idName") 来取得 id 为 idName 的HTML对象。  解决方法:统一用 getElementById("idName") 来取得 id 为 idName 的HTML对象。
五、变量名与某HTML对象ID相同的问题  问题说明:IE下,HTML对象的ID可以作为 document 的下属对象变量名直接使用,Firefox下则不能;Firefox下,可以使用与HTML对象ID相同的变量名,IE下则不能。  解决方法:使用 document.getElementById("idName") 代替 document.idName。最好不要取HTML对象ID相同的变量名,以减少错误;在声明变量时,一律加上var关键字,以避免歧义。
六、const问题  问题说明:Firefox下,可以使用const关键字或var关键字来定义常量;IE下,只能使用var关键字来定义常量。  解决方法:统一使用var关键字来定义常量。
七、input.type属性问题  问题说明:IE下 input.type 属性为只读;但是Firefox下 input.type 属性为读写。  解决办法:不修改 input.type 属性。如果必须要修改,可以先隐藏原来的input,然后在同样的位置再插入一个新的input元素。
八、window.event问题  问题说明:window.event 只能在IE下运行,而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用。  解决方法:在事件发生的函数上加上event参数,在函数体内(假设形参为evt)使用 var myEvent = evt?evt:(window.event?window.event:null)示例:
Example Source Code [www.div-css.net]&input type="button" onclick="doSomething(event)"/& &script language="javascript"& function doSomething(evt) { var myEvent = evt?evt:(window.event?window.event:null)... }九、event.x与event.y问题  问题说明:IE下,even对象有x、y属性,但是没有pageX、pageY属性;Firefox下,even对象有pageX、pageY属性,但是没有x、y属性。  解决方法:var myX = event.x ? event.x : event.pageX; var myY = event.y ? event.y:event.pageY;  如果考虑第8条问题,就改用myEvent代替event即可。
十、event.srcElement问题  问题说明:IE下,even对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性。  解决方法:使用srcObj = event.srcElement ? event.srcElement : event.  如果考虑第8条问题,就改用myEvent代替event即可。
十一、window.location.href问题  问题说明:IE或者Firefox2.0.x下,可以使用window.location或window.location.href;Firefox1.5.x下,只能使用window.location。  解决方法:使用 window.location 来代替 window.location.href。当然也可以考虑使用 location.replace()方法。
十二、模态和非模态窗口问题  问题说明:IE下,可以通过showModalDialog和showModelessDialog打开模态和非模态窗口;Firefox下则不能。  解决方法:直接使用 window.open(pageURL,name,parameters) 方式打开新窗口。   如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口。如果需要父窗口控制子窗口的话,使用var subWindow = window.open(pageURL,name,parameters); 来获得新开的窗口对象。
十三、frame和iframe问题  以下面的frame为例:   &frame src="" id="frameId" name="frameName" /&   (1)访问frame对象  IE:使用window.frameId或者window.frameName来访问这个frame对象;  Firefox:使用window.frameName来访问这个frame对象;  解决方法:统一使用 window.document.getElementById("frameId") 来访问这个frame对象;  (2)切换frame内容  在IE和Firefox中都可以使用window.document.getElementById("frameId").src = "div-css.net.html"或window.frameName.location = "div-css.net.html"来切换frame的内容;  如果需要将frame中的参数传回父窗口,可以在frame中使用parent关键字来访问父窗口。
十四、body载入问题  问题说明:Firefox的body对象在body标签没有被浏览器完全读入之前就存在;而IE的body对象则必须在body标签被浏览器完全读入之后才存在。  [注] 这个问题尚未实际验证,待验证后再来修改。  [注] 经验证,IE6、Opera9以及FireFox2中不存在上述问题,单纯的JS脚本可以访问在脚本之前已经载入的所有对象和元素,即使这个元素还没有载入完成。
十五、事件委托方法  问题说明:IE下,使用 document.body.onload = 其中function inject()在这之前已被实现;在Firefox下,使用 document.body.onload = inject();  解决方法:统一使用 document.body.onload=new Function('inject()'); 或者 document.body.onload = function(){/* 这里是代码 */}  [注意] Function和function的区别
十六、访问的父元素的区别  问题说明:在IE下,使用 obj.parentElement 或 obj.parentNode 访问obj的父结点;在firefox下,使用 obj.parentNode 访问obj的父结点。  解决方法:因为firefox与IE都支持DOM,因此统一使用obj.parentNode 来访问obj的父结点。
十七、cursor:hand VS cursor:pointer  问题说明:firefox不支持hand,但ie支持pointer ,两者都是手形指示。  解决方法:统一使用pointer。
十八、innerText的问题.  问题说明:innerText在IE中能正常工作,但是innerText在FireFox中却不行。  解决方法:在非IE浏览器中使用textContent代替innerText。  示例:
Example Source Code [www.div-css.net]if(navigator.appName.indexOf("Explorer") &-1){ document.getElementById('element').innerText = "my text"; } else{ document.getElementById('element').textContent = "my text"; }   [注] innerHTML 同时被ie、firefox等浏览器支持,其他的,如outerHTML等只被ie支持,最好不用。
十九、对象宽高赋值问题  问题说明:FireFox中类似 obj.style.height = imgObj.height 的语句无效。  解决方法:统一使用 obj.style.height = imgObj.height + 'px';
二十、Table操作问题  问题说明:ie、firefox以及其它浏览器对于 table 标签的操作都各不相同,在ie中不允许对table和tr的innerHTML赋值,使用js增加一个tr时,使用appendChild方法也不管用。  解决方法:
Example Source Code [www.div-css.net]//向table追加一个空行: var row = otable.insertRow(-1); var cell = document.createElement("td"); cell.innerHTML = ""; cell.className = "XXXX"; row.appendChild(cell);   [注] 由于俺很少使用JS直接操作表格,这个问题没有遇见过。建议使用JS框架集来操作table,如JQuery。
二一、ul和ol列表缩进问题  消除ul、ol等列表的缩进时,样式应写成:list-style:margin:0padding:0   其中margin属性对IE有效,padding属性对FireFox有效。← 此句表述有误,详细见↓  [注] 这个问题尚未实际验证,待验证后再来修改。  [注] 经验证,在IE中,设置margin:0px可以去除列表的上下左右缩进、空白以及列表编号或圆点,设置padding对样式没有影响;在Firefox 中,设置margin:0px仅仅可以去除上下的空白,设置padding:0px后仅仅可以去掉左右缩进,还必须设置list-style:none才 能去除列表编号或圆点。也就是说,在IE中仅仅设置margin:0px即可达到最终效果,而在Firefox中必须同时设置margin:0px、 padding:0px以及list-style:none三项才能达到最终效果。
二二、CSS透明问题  IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。   FF:opacity:0.6。  [注] 最好两个都写,并将opacity属性放在下面。
二三、CSS圆角问题  IE:ie7以下版本不支持圆角。  FF: -moz-border-radius:4px,或者-moz-border-radius-topleft:4-moz-border- radius-topright:4-moz-border-radius-bottomleft:4-moz-border- radius- bottomright:4。  [注] 圆角问题是CSS中的经典问题,建议使用JQuery框架集来设置圆角,让这些复杂的问题留给别人去想吧。
  关于CSS中的问题实在太多了,甚至同样的CSS定义在不同的页面标准中的显示效果都是不一样的。更多的知识请参考div-css.net的文章。一个合乎发展的建议是,页面采用标准DHTML标准 编写,较少使用table,CSS定义尽量依照标准DOM,同时兼顾IE、Firefox、Opera等主流浏览器。BTW,很多情况下,FF和 Opera的CSS解释标准更贴近CSS标准,也更具有规范性。 文章来源: Div-Css.net设计网 参考:http://www.div-css.net/div_css/topic/index.asp?id=6869
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
--按姓氏笔画排序select * from 表名 order by 列名 Collate Chinese_PRC_Stroke_ci_as
--按拼音首字母排序select * from 表名 order by 列名 Collate Chinese_PRC_CS_AS_KS_WS
二.排序规则简介: 什么叫排序规则呢?ms是这样描述的:"在 microsoft sql server 2000 中,字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存储和比较字符所使用的规则。"  在查询分析器内执行下面语句,可以得到sql server支持的所有排序规则。    select * from ::fn_helpcollations() 排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。如:  chinese_prc_cs_ai_ws 前半部份:指unicode字符集,chinese_prc_指针对大陆简体字unicode的排序规则。排序规则的后半部份即后缀 含义:   _bin 二进制排序   _ci(cs) 是否区分大小写,ci不区分,cs区分  _ai(as) 是否区分重音,ai不区分,as区分     _ki(ks) 是否区分假名类型,ki不区分,ks区分  _wi(ws) 是否区分宽度 wi不区分,ws区分 区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项, 比较还将重音不同的字母视为不等。区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项三.排序规则的应用:  sql server提供了大量的windows和sqlserver专用的排序规则,但它的应用往往被开发人员所忽略。其实它在实践中大有用处。  例1:让表name列的内容按拼音排序:create table #t(id int,name varchar(20))insert #t select 1,中union all select 2,国union all select 3,人union all select 4,阿select * from #t order by name collate chinese_prc_cs_as_ks_ws drop table #t/*结果:id name ----------- -------------------- 4 阿2 国3 人1 中*/  例2:让表name列的内容按姓氏笔划排序:create table #t(id int,name varchar(20))insert #t select 1,三union all select 2,乙union all select 3,二union all select 4,一union all select 5,十select * from #t order by name collate chinese_prc_stroke_cs_as_ks_ws drop table #t/*结果:id name ----------- -------------------- 4 一2 乙3 二5 十1 三*/四.在实践中排序规则应用的扩展  sql server汉字排序规则可以按拼音、笔划等排序,那么我们如何利用这种功能来处理汉字的一些难题呢?我现在举个例子:          用排序规则的特性计算汉字笔划  要计算汉字笔划,我们得先做准备工作,我们知道,windows多国汉字,unicode目前收录汉字共20902个。简体gbk码汉字unicode值从19968开始。  首先,我们先用sqlserver方法得到所有汉字,不用字典,我们简单利用sql语句就可以得到:select top 20902 code=identity(int,19968,1) into #t from syscolumns a,syscolumns b再用以下语句,我们就得到所有汉字,它是按unicode值排序的:  select code,nchar(code) as cnword from #t   然后,我们用select语句,让它按笔划排序。select code,nchar(code) as cnword from #t order by nchar(code) collate chinese_prc_stroke_cs_as_ks_ws,code结果:code cnword ----------- ------ 19968 一20008 丨20022 丶20031 丿20032 乀20033 乁20057 乙20058 乚20059 乛20101 亅19969 丁..........  从上面的结果,我们可以清楚的看到,一笔的汉字,code是从1,从小到大排,但到了二笔汉字的第一个字“丁”,code为19969,就不按顺序而重新开始了。有了这结果,我们就可以轻松的用sql语句得到每种笔划汉字归类的第一个或最后一个汉字。下面用语句得到最后一个汉字:create table #t1(id int identity,code int,cnword nvarchar(2))insert #t1(code,cnword)select code,nchar(code) as cnword from #t order by nchar(code) collate chinese_prc_stroke_cs_as_ks_ws,codeselect a.cnword from #t1 a left join #t1 b on a.id=b.id-1 and a.code&b.code where b.code is nullorder by a.id得到36个汉字,每个汉字都是每种笔划数按chinese_prc_stroke_cs_as_ks_ws排序规则排序后的最后一个汉字:亅阝马风龙齐龟齿鸩龀龛龂龆龈龊龍龠龎龐龑龡龢龝齹龣龥齈龞麷鸞麣龖龗齾齉龘  上面可以看出:“亅”是所有一笔汉字排序后的最后一个字,“阝”是所有二笔汉字排序后的最后一个字......等等。  但同时也发现,从第33个汉字“龗(33笔)”后面的笔划有些乱,不正确。但没关系,比“龗”笔划多的只有四个汉字,我们手工加上:齾35笔,齉36笔,靐39笔,龘64笔建汉字笔划表(tab_hzbh):create table tab_hzbh(id int identity,cnword nchar(1))--先插入前33个汉字insert tab_hzbhselect top 33 a.cnword from #t1 a left join #t1 b on a.id=b.id-1 and a.code&b.code where b.code is nullorder by a.id--再加最后四个汉字set identity_insert tab_hzbh ongoinsert tab_hzbh(id,cnword)     select 35,n齾union all select 36,n齉union all select 39,n靐union all select 64,n龘goset identity_insert tab_hzbh offgo  到此为止,我们可以得到结果了,比如我们想得到汉字“国”的笔划:declare @a nchar(1)set @a=国select top 1 id from tab_hzbh where cnword&=@a collate chinese_prc_stroke_cs_as_ks_wsorder by idid ----------- 8(结果:汉字“国”笔划数为8)  上面所有准备过程,只是为了写下面这个函数,这个函数撇开上面建的所有临时表和固定表,为了通用和代码转移方便,把表tab_hzbh的内容写在语句内,然后计算用户输入一串汉字的总笔划:create function fun_getbh(@str nvarchar(4000))returns intasbegindeclare @word nchar(1),@n intset @n=0while len(@str)&0beginset @word=left(@str,1)--如果非汉字,笔划当0计set @n=@n+(case when unicode(@word) between 19968 and then (select top 1 id from (select 1 as id,n亅 as word union all select 2,n阝 union all select 3,n马 union all select 4,n风 union all select 5,n龙 union all select 6,n齐 union all select 7,n龟 union all select 8,n齿 union all select 9,n鸩 union all select 10,n龀 union all select 11,n龛 union all select 12,n龂 union all select 13,n龆 union all select 14,n龈 union all select 15,n龊 union all select 16,n龍 union all select 17,n龠 union all select 18,n龎 union all select 19,n龐 union all select 20,n龑 union all select 21,n龡 union all select 22,n龢 union all select 23,n龝 union all select 24,n齹 union all select 25,n龣 union all select 26,n龥 union all select 27,n齈 union all select 28,n龞 union all select 29,n麷 union all select 30,n鸞 union all select 31,n麣 union all select 32,n龖 union all select 33,n龗 union all select 35,n齾 union all select 36,n齉 union all select 39,n靐 union all select 64,n龘 ) t where word&=@word collate chinese_prc_stroke_cs_as_ks_wsorder by id asc) else 0 end)set @str=right(@str,len(@str)-1)endreturn @nend--函数调用实例:select dbo.fun_getbh(中华人民共和国),dbo.fun_getbh(中華人民共和國)   执行结果:笔划总数分别为39和46,简繁体都行。 当然,你也可以把上面“union all”内的汉字和笔划改存在固定表内,在汉字列建clustered index,列排序规则设定为:    chinese_prc_stroke_cs_as_ks_ws这样速度更快。如果你用的是big5码的操作系统,你得另外生成汉字,方法一样。但有一点要记住:这些汉字是通过sql语句select出来的,不是手工输入的,更不是查字典得来的,因为新华字典毕竟不同于unicode字符集,查字典的结果会不正确。       用排序规则的特性得到汉字拼音首字母  用得到笔划总数相同的方法,我们也可以写出求汉字拼音首字母的函数。如下:create function fun_getpy(@str nvarchar(4000))returns nvarchar(4000)asbegindeclare @word nchar(1),@py nvarchar(4000)set @py=while len(@str)&0beginset @word=left(@str,1)--如果非汉字字符,返回原字符set @py=@py+(case when unicode(@word) between 19968 and then (select top 1 py from (select a as py,n驁 as wordunion all select b,n簿union all select c,n錯union all select d,n鵽union all select e,n樲union all select f,n鰒union all select g,n腂union all select h,n夻union all select j,n攈union all select k,n穒union all select l,n鱳union all select m,n旀union all select n,n桛union all select o,n漚union all select p,n曝union all select q,n囕union all select r,n鶸union all select s,n蜶union all select t,n籜union all select w,n鶩union all select x,n鑂union all select y,n韻union all select z,n咗) t where word&=@word collate chinese_prc_cs_as_ks_ws order by py asc) else @word end)set @str=right(@str,len(@str)-1)endreturn @pyend--函数调用实例:select dbo.fun_getpy(中华人民共和国),dbo.fun_getpy(中華人民共和國)结果都为:zhrmghg
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
Union All/Union/Intersect操作
适用场景:对两个集合的处理,例如追加、合并、取相同项、相交项等等。
Concat(连接)
说明:连接不同的集合,不会自动过滤相同项;延迟。
1.简单形式:
from c in db.Customers
select c.Phone
from c in db.Customers
select c.Fax
from e in db.Employees
select e.HomePhone
语句描述:返回所有消费者和雇员的电话和传真。
2.复合形式:
from c in db.Customers
select new {Name = c.CompanyName, c.Phone}
from e in db.Employees
select new {Name = e.FirstName + " " + e.LastName, Phone = e.HomePhone}
语句描述:返回所有消费者和雇员的姓名和电话。
Union(合并)
说明:连接不同的集合,自动过滤相同项;延迟。即是将两个集合进行合并操作,过滤相同的项。
from c in db.Customers
select c.Country
from e in db.Employees
select e.Country
语句描述:查询顾客和职员所在的国家。
Intersect(相交)
说明:取相交项;延迟。即是获取不同集合的相同项(交集)。即先遍历第一个集合,找出所有唯一的元素,然后遍历第二个集合,并将每个元素与前面找出的元素作对比,返回所有在两个集合内都出现的元素。
from c in db.Customers
select c.Country
).Intersect(
from e in db.Employees
select e.Country
语句描述:查询顾客和职员同在的国家。
Except(与非)
说明:排除相交项;延迟。即是从某集合中删除与另一个集合中相同的项。先遍历第一个集合,找出所有唯一的元素,然后再遍历第二个集合,返回第二个集合中所有未出现在前面所得元素集合中的元素。
from c in db.Customers
select c.Country
from e in db.Employees
select e.Country
语句描述:查询顾客和职员不同的国家。
Top/Bottom操作
适用场景:适量的取出自己想要的数据,不是全部取出,这样性能有所加强。
说明:获取集合的前n个元素;延迟。即只返回限定数量的结果集。
from e in db.Employees
orderby e.HireDate
语句描述:查询出最早5位雇用的雇员。
说明:跳过集合的前n个元素;延迟。即我们跳过给定的数目返回后面的结果集。
from p in db.Products
orderby p.UnitPrice descending
.Skip(10);
语句描述:查询出10个最贵的产品。
说明:直到某一条件成立就停止获取;延迟。即用其条件去依次判断源序列中的元素,返回符合判断条件的元素,该判断操作将在返回false或源序列的末尾结束 。
说明:直到某一条件成立就停止跳过;延迟。即用其条件去判断源序列中的元素并且跳过第一个符合判断条件的元素,一旦判断返回false,接下来将不再进行判断并返回剩下的所有元素。
Paging(分页)操作
适用场景:结合Skip和Take就可实现对数据分页操作。
from c in db.Customers
orderby c.ContactName
.Take(10);
语句描述:跳过前50条记录,取出接下来的10条记录,形成乘积表在第6页显示。
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
今天在CSDN看到一个关于取当前日期是在一年中的第几周的帖子,上了头条推荐,里面解决方法的思路,是先取得该年第一天是星期几,然后取当前日期的DayOfYear再除以7,同时用DayOfYear对7取余,从而得到当前日期是一年中的第几周。 这种方法不但麻烦,而且效率低,其实C#里有GregorianCalendar这样一个类,只需要两行代码,就可以很轻松的完成这个任务的,只是很多人不知道,或是遗忘了。
&!--&br /&&br /&Code highlighting produced by Actipro CodeHighlighter (freeware)&br /&http://www.CodeHighlighter.com/&br /&&br /&--&usingSystem.GGregorianCalendargc=newGregorianCalendar();intweekOfYear=gc.GetWeekOfYear(DateTime.Now,CalendarWeekRule.FirstDay,DayOfWeek.Monday);
写成通用的方法,获取某一日期是该年中的第几周
&!--&br /&&br /&Code highlighting produced by Actipro CodeHighlighter (freeware)&br /&http://www.CodeHighlighter.com/&br /&&br /&--&usingSystem.G///&summary&///获取某一日期是该年中的第几周///&/summary&///&paramname="dt"&日期&/param&///&returns&该日期在该年中的周数&/returns&privateintGetWeekOfYear(DateTimedt){GregorianCalendargc=newGregorianCalendar();returngc.GetWeekOfYear(dt,CalendarWeekRule.FirstDay,DayOfWeek.Monday);}
以前还在CSDN上遇到这样一个问题,就是计算某一年有多少周,同样可以用这个类的方法来解决
&!--&br /&&br /&Code highlighting produced by Actipro CodeHighlighter (freeware)&br /&http://www.CodeHighlighter.com/&br /&&br /&--&usingSystem.G///&summary&///获取某一年有多少周///&/summary&///&paramname="year"&年份&/param&///&returns&该年周数&/returns&privateintGetWeekAmount(intyear){DateTimeend=newDateTime(year,12,31);//该年最后一天System.Globalization.GregorianCalendargc=newGregorianCalendar();returngc.GetWeekOfYear(end,CalendarWeekRule.FirstDay,DayOfWeek.Monday);//该年星期数}
&rdf:RDF xmlns:rdf="http://www.w3.org/-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"&
&rdf:Description
rdf:about="http://www.cnblogs.com/supers/archive//1335182.html"
dc:identifier="http://www.cnblogs.com/supers/archive//1335182.html"
dc:title=""
trackback:ping="http://www.cnblogs.com/supers/services/trackbacks/1335182.aspx" /&
&/rdf:RDF&
--&&!--end: topics 文章、评论容器--&&!--done--&
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
class Program
{ static volatile bool static void Main(string[] args)
DataSet ds = ExportDataSet(); //使用2个线程模拟并发操作
Thread t = new Thread(delegate() { result = Insert(ds); Console.WriteLine(result ? "导入成功" : "导入失败"); });
t.Start();
Thread t1 = new Thread(delegate() { result = Insert(ds); Console.WriteLine(result ? "导入成功" : "导入失败"); });
t1.Start();
Console.ReadLine();
} /// &summary& /// 获取数据DataSet /// &/summary& /// &returns&&/returns&
static private DataSet ExportDataSet()
{ //局域网的某服务器模拟数据库远程连接
SqlConnection RemoteConn = new SqlConnection("Data Source=192.168.0.183;Initial Catalog=NUser ID=Password=sa"); using ( /*目标表与源表结构并不相同,目标表只包含OrderID、CustomerID、EmployeeID、ShipCountry这四个字段。注意这里字段是区分大小写的,不然SqlBulkCopy的WriteToServer方法会报运行时异常:“给定的 ColumnMapping 与源或目标中的任意列均不匹配”的处理方法。这个地方浪费了我1个小时才发现*/
SqlDataAdapter oda = new SqlDataAdapter("SELECT [OrderID], [CustomerID], [EmployeeID], [ShipCountry] FROM [Northwind].[dbo].[Orders]", RemoteConn)) //如果目标表与源表结构完全一致,则用下面语句即可,msdn的例子也只是这样 //SqlDataAdapter oda = new SqlDataAdapter("SELECT * FROM [Ednoland].[dbo].[Score]", RemoteConn))
DataSet ds = new DataSet();
oda.Fill(ds, "Orders");//给定表名
} /// &summary& /// 将DataSet导入远程数据库(未来放在WebService中) /// &/summary& /// &param name="ds"&&/param& /// &returns&&/returns&
public static bool Insert(DataSet ds)
{ using (SqlConnection sqlconn = new SqlConnection("Data Source=.;Initial Catalog=NUser ID=Password=sa"))
sqlconn.Open();
SqlTransaction sqlbulkTransaction = sqlconn.BeginTransaction(IsolationLevel.ReadCommitted); using (SqlBulkCopy sbc = new SqlBulkCopy(sqlconn, SqlBulkCopyOptions.KeepIdentity, sqlbulkTransaction))
sbc.BatchSize = 20000;//20000行每连接
sbc.BulkCopyTimeout = 50;//50秒超时
if (ds.Tables == null || ds.Tables.Count == 0) return false; if (ds.Tables.Count == 1)
{ return BulkInsert(sbc, ds.Tables[0], sqlbulkTransaction); ;
{ bool res = true; foreach (DataTable dt in ds.Tables)
res = BulkInsert(sbc, dt, sqlbulkTransaction);
} private static bool BulkInsert(SqlBulkCopy sbc, DataTable dt, SqlTransaction sqlbulkTransaction)
{ bool res = true; try
{ //将DataTable表名作为待导入库中的目标表名
sbc.DestinationTableName = dt.TableN //将数据集合和目标服务器库表中的字段对应
for (int i = 0; i & dt.Columns.C i++)
{ //sbc.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
sbc.ColumnMappings.Add(i,i);//可以避免字段大小写不一致造成无法映射的问题
sbc.WriteToServer(dt); //提交事务
sqlbulkTransaction.Commit();
res = true;
} catch (SqlException ex)
res = false;
sqlbulkTransaction.Rollback();
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
--sp_addlinkedserver
服务器名.dbo.表名
sp_addlinkedserver
N'MyNSql',
@srvproduct
N'SQLOLEDB',
N'10.44.204.63',
要修改@server的值为你想赋给该服务器的名称。
@DataSrc表示服务器的网络名称,可用其IP地址。
是要使用的该服务器中的数据库。
请放到Query
Analyzer中执行。
MyNSql.SPADCO.dbo.sale
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
要引用jqery.js
&script&$(function () { // 全选 $('#hobby_all').click(function () { $('input[name="hobby[]"]').attr("checked",true); }) ;
// 反选 $('#hobby_anti_all').click(function () { $('input[name="hobby[]"]').attr("checked",false); }) ;
// 全选 $('#city_all').click(function () { $('input[name="city[]"]').attr("checked",true); }) ;
// 反选 $('#city_anti_all').click(function () { $('input[name="city[]"]').attr("checked",false); }) ;
$('#submit').click(function () {
// 获取多选框的值 hobby = '&br&兴趣爱好: &br&' ; $('input[@name="hobby[]"]').each(function () { if ($(this).attr('checked') == true) { hobby += $(this).attr('value')+",&br&" ; } });
// 获取多选框的值 city = '&br&&br&喜欢的城市: &br&' ; $('input[@name="city[]"]').each(function () { if ($(this).attr('checked') == true) { city += $(this).attr('value')+",&br&" ; } });
// 获取下拉列表的值 age = '&br&&br&年龄: &br&' + $('#age').val() ;
// 获取单选框的值 sex = '&br&&br&性别: &br&' + $('input[@type="radio"][@checked]').val() ; $('.content').html(hobby + city + age + sex) ;
});&/script&
&style&.fieldset{ width: 200}
&div class='test' id='checkbox'&
&form method="post" &性别&input type="radio" name="sex" value="male" /&男&input type="radio" name="sex" value="female" /&女&input type="radio" name="sex" value="null" /&保密&br /&&br /&年龄:&select name="age" id="age" value="年龄"&&option value="20"&20&/option&&option value="30" &30&/option&&option value="40" &40&/option&&option value="50"&50+&/option&&/select&&br /&&br /&&fieldset class="fieldset"&&legend&兴趣爱好 &/legend&旅游&input type="checkbox" name="hobby[]" id="tour" value="tour" /&&br /&音乐&input type="checkbox" name="hobby[]" id="music" value="music" /&&br /&足球&input type="checkbox" name="hobby[]" id="football" value="football" /&&br /&网游&input type="checkbox" name="hobby[]" id="game" value="game" /&&br /&&input type="button" name="hobby_anti_all" id="hobby_anti_all" value="反选"/&&input type="button" name="hobby_all" id="hobby_all" value="全选" /&&/fieldset&&br /&&fieldset class="fieldset"&&legend&喜欢的城市&/legend&北京&input type="checkbox" name="city[]" id="beijing" value="beijing" /&&br /&上海&input type="checkbox" name="city[]" id="shanghai" value="shanghai" /&&br /&天津&input type="checkbox" name="city[]" id="tianjin" value="tianjin" /&&br /&重庆&input type="checkbox" name="city[]" id="chongqing" value="chongqing" /&&br /&&input type="button" name="city_anti_all" id="city_anti_all" value="反选"/&&input type="button" name="city_all" id="city_all" value="全选" /&&/fieldset&&br /&&input type="button" id="submit" value="sumit" /&&/form&&div class="content"&&/div&&/div&
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
//遍历option和添加、移除optionfunction changeShipMethod(shipping){var len = $("select[@name=ISHIPTYPE] option").lengthif(shipping.value != "CA"){$("select[@name=ISHIPTYPE] option").each(function(){if($(this).val() == 111){$(this).remove();}});}else{$("&option value='111'&UPS Ground&/option&").appendTo($("select[@name=ISHIPTYPE]"));}}
//取得下拉选单的选取值
$(#testSelect option:selected').text();或$("#testSelect").find('option:selected').text();或$("#testSelect").val();//////////////////////////////////////////////////////////////////记性不好的可以收藏下:1,下拉框:
var cc1 = $(".formc select[@name='country'] option[@selected]").text(); //得到下拉菜单的选中项的文本(注意中间有空格)var cc2 = $('.formc select[@name="country"]').val(); //得到下拉菜单的选中项的值var cc3 = $('.formc select[@name="country"]').attr("id"); //得到下拉菜单的选中项的ID属性值$("#select").empty();//清空下拉框//$("#select").html('');$("&option value='1'&1111&/option&").appendTo("#select")//添加下拉框的option
稍微解释一下:1.select[@name='country'] option[@selected] 表示具有name 属性,并且该属性值为'country' 的select元素 里面的具有selected 属性的option 元素;可以看出有@开头的就表示后面跟的是属性。
2,单选框:$("input[@type=radio][@checked]").val(); //得到单选框的选中项的值(注意中间没有空格)$("input[@type=radio][@value=2]").attr("checked",'checked'); //设置单选框value=2的为选中状态.(注意中间没有空格)
3,复选框:$("input[@type=checkbox][@checked]").val(); //得到复选框的选中的第一项的值$("input[@type=checkbox][@checked]").each(function(){ //由于复选框一般选中的是多个,所以可以循环输出alert($(this).val());});
$("#chk1").attr("checked",'');//不打勾$("#chk2").attr("checked",true);//打勾if($("#chk1").attr('checked')==undefined){} //判断是否已经打勾
当然jquery的选择器是强大的. 还有很多方法.
&script src="jquery-1.2.1.js" type="text/javascript"&&/script&&script language="javascript" type="text/javascript"&$(document).ready(function(){$("#selectTest").change(function(){//alert("Hello");//alert($("#selectTest").attr("name"));//$("a").attr("href","xx.html");//window.location.href="xx.html";//alert($("#selectTest").val());alert($("#selectTest option[@selected]").text());$("#selectTest").attr("value", "2");
});});&/script&
&a href="#"&aaass&/a&
&!--下拉框--&&select id="selectTest" name="selectTest"&&option value="1"&11&/option&&option value="2"&22&/option&&option value="3"&33&/option&&option value="4"&44&/option&&option value="5"&55&/option&&option value="6"&66&/option&&/select&jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关获取一组radio被选中项的值var item = $('input[@name=items][@checked]').val();获取select被选中项的文本var item = $("select[@name=items] option[@selected]").text();select下拉框的第二个元素为当前选中值$('#select_id')[0].selectedIndex = 1;radio单选组的第二个元素为当前选中值$('input[@name=items]').get(1).checked =获取值:文本框,文本区域:$("#txt").attr("value");多选框checkbox:$("#checkbox_id").attr("value");单选组radio: $("input[@type=radio][@checked]").val();下拉框select: $('#sel').val();控制表单元素:文本框,文本区域:$("#txt").attr("value",'');//清空内容$("#txt").attr("value",'11');//填充内容多选框checkbox: $("#chk1").attr("checked",'');//不打勾$("#chk2").attr("checked",true);//打勾if($("#chk1").attr('checked')==undefined) //判断是否已经打勾单选组radio: $("input[@type=radio]").attr("checked",'2');//设置value=2的项目为当前选中项下拉框select: $("#sel").attr("value",'-sel3');//设置value=-sel3的项目为当前选中项$("&optionvalue='1'&1111&/option&&optionvalue='2'& 2222&/option&").appendTo("#sel")//添加下拉框的option$("#sel").empty();//清空下拉框
获取一组radio被选中项的值var item = $('input[@name=items][@checked]').val();获取select被选中项的文本var item = $("select[@name=items] option[@selected]").text();select下拉框的第二个元素为当前选中值$('#select_id')[0].selectedIndex = 1;radio单选组的第二个元素为当前选中值$('input[@name=items]').get(1).checked =获取值:文本框,文本区域:$("#txt").attr("value");多选框checkbox:$("#checkbox_id").attr("value");单选组radio: $("input[@type=radio][@checked]").val();下拉框select: $('#sel').val();控制表单元素:文本框,文本区域:$("#txt").attr("value",'');//清空内容$("#txt").attr("value",'11');//填充内容多选框checkbox: $("#chk1").attr("checked",'');//不打勾$("#chk2").attr("checked",true);//打勾if($("#chk1").attr('checked')==undefined) //判断是否已经打勾单选组radio: $("input[@type=radio]").attr("checked",'2');//设置value=2的项目为当前选中项下拉框select: $("#sel").attr("value",'-sel3');//设置value=-sel3的项目为当前选中项$("&option value='1'&1111&/option&&option value='2'&2222&/option&").appendTo("#sel")//添加下拉框的option$("#sel").empty();//清空下拉框
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
JQuery获取和设置Select选项
获取Select :
&select id='addRegType'&&/select&
获取select 选中的 text:
$("#ddlRegType").find("option:selected").text();
或者:$("#ddlRegType").find("option[selected]").text();
获取select选中的 value:
$("#ddlRegType ").val();
获取select选中的索引:
$("#ddlRegType ").get(0).selectedI
设置select:
设置select 选中的索引:
$("#ddlRegType ").get(0).selectedIndex=//index为索引值
设置select 选中的value:
$("#ddlRegType ").attr("value","Normal“);
$("#ddlRegType ").val("Normal");
$("#ddlRegType ").get(0).value =
设置select 选中的text:
var count=$("#ddlRegType ").size();
for(var i=0;i&i++)
{ if($("#ddlRegType ").get(0).options[i].text == text)
$("#ddlRegType ").get(0).options[i].selected =
清空 Select:
$("#ddlRegType ").empty();
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
给jq 的$符号引用改为 $j 以便不与其他$符号冲突
var $j = jQuery.noConflict();
查找 ID 为"myDiv"的元素。$("#myDiv");
查找一个 DIV 元素。$("div");
查找含有特殊字符的元素 &span id="foo:bar"&&/span& ---& ${"#foo\\:bar"}
&span id="foo[bar]"&&/span& ---& ${"#foo\\[bar\\]"}
&span id="foo.bar"&&/span& ---& ${"foo\\.bar"}
查找所有类是 "myClass" 的元素. $(".myClass");
查找所有 name 属性是 newsletter 的 input 元素 $("input[name='newsletter']").attr("checked", true);
找到匹配任意一个类的元素。 $("div,span,p.myClass")
找到表单中所有的 input 元素 $("form input")
匹配表单中所有的子级input元素。$("form & input")
查找表格的1、3、5...行(即索引值0、2、4...) $("tr:even")
查找表格的2、4、6行(即索引值1、3、5...) $("tr:odd")
给页面内所有标题加上背景色 $(":header").css("background", "#EEE");
只有对不在执行动画效果的元素执行一个动画特效 $("#run").click(function(){
$("div:not(:animated)").animate({ left: "+=20" }, 1000);});
查找所有包含 "John" 的 div 元素 $("div:contains('John')")
查找所有含有 id 属性的 div 元素 $("div[id]")
找到所有含有 id 属性,并且它的 name 属性是以 man 结尾的 $("input[id][name$='man']")
查找所有密码框 $(":password")
匹配type为hidden的元素 $("input:hidden")
查找所有选中的复选框元素 $("input:checked")
查找所有未选中的 input 元素 $("input:not(:checked)")
查找所有选中的选项元素 $("select option:selected")
返回文档中第一个图像的src属性值。&img src="test.jpg"/& ---& $("img").attr("src");
为所有图像设置src和alt属性。 $("img").attr({ src: "test.jpg", alt: "Test Image" });
为所有图像设置src属性。 $("img").attr("src","test.jpg");
将文档中图像的src属性删除 $("img").removeAttr("src");
为匹配的元素加上 selected highlight 类 &p class="selected highlight"&Hello&/p& ---& $("p").addClass("selected highlight");
从匹配的元素中删除 'selected' 类 $("p").removeClass("selected");
删除匹配元素的所有类 $("p").removeClass();
取得第一个匹配元素的html内容 $("div").html();
设置每一个匹配元素的html内容 $("div").html("&p&Hello Again&/p&");
取得所有匹配元素的内容 $("p").text();
获取文本框中的值 $("input").val();
设置每一个匹配元素的值$("input").val("hello world!");
由于input元素的父元素是一个表单元素,所以返回true。 $("input[type='checkbox']").parent().is("form")
查找DIV中的每个子元素。 $("div").children()
在每个div中查找 .selected 的类。 $("div").children(".selected")
取得第一个段落的color样式属性的值。 $("p").css("color");
如果属性名包含 "-"的话,必须使用引号: $("p").css({ "margin-left": "10px", "background-color": "blue" });
将所有段落字体设为红色 $("p").css("color","red");
获取文档的高 $(document).height();
把所有段落的高设为 20: $("p").height(20);
获取当前窗口的宽 $(window).width();
将所有段落的宽设为 20: $("p").width(20);
在DOM加载完成时运行的代码,可以这样写:$(document).ready(function(){// 在这里写你的代码...});
使用 $(document).ready() 的简写 jQuery(function($) {// 你可以在这里继续使用$作为别名...});
简写 $(function(){// 文档就绪});
当每个段落被点击的时候,弹出其文本。 $("p").bind("click", function(){ alert( $(this).text() );});
将页面内所有段落点击后隐藏。$("p").click( function () { $(this).hide(); });
鼠标悬停的表格加上特定的类 $("td").hover(
function () {$(this).addClass("hover");}, //over (Function) : 鼠标移到元素上要触发的函数
function () {$(this).removeClass("hover");} //out (Function) : 鼠标移出元素要触发的函数
在每一个匹配元素的blur事件中绑定的处理函数。$("p").blur( function () { alert("Hello World!"); } );
给所有的文本框增加输入验证 $("input[type='text']").change( function() {// 这里可以写些验证代码});
当页面加载后将 id 为 'login' 的元素设置焦点: $(document).ready(function(){$("#login").focus();});
使人无法使用文本框: $("input[type=text]").focus(function(){ this.blur();});
当页面滚动条变化时,执行的函数: $(window).scroll( function() { } );
提交本页的第一个表单: $("form:first").submit();
如果你要阻止表单提交: $("form").submit( function () {} );
迭代两个图像,并设置它们的 src 属性。 $("img").each(function(i){this.src = "test" + i + ".jpg";});
注意:此处 this 指代的是 DOM 对象而非 jQuery 对象。
如果你想得到 jQuery对象,可以使用 $(this) 函数。$("img").each(function(){$(this).toggleClass("example");});
你可以使用 来提前跳出 each() 循环。
计算文档中所有图片数量 $("img").size(); 等同于 $("img").
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
最新版本的jquery1.32与老版本区别主要是对属性的查询方式。老版本:$("input[@name=ctrlname]")新版本:$("input:name=ctrlname")
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
view plaincopy to clipboardprint?/** *屏蔽功能类(屏蔽F5、Ctrl+N、Shift+F10、Alt+F4、右键菜单......) */ /** 屏蔽F1帮助 */ window.onhelp = function(){} /** *屏蔽 F5、Ctrl+N、Shift+F10、Alt+F4 *如果想要屏蔽其他键,则找到对应的 keyCode 再依照此方法即可 */ document.onkeydown = function(event){
event = window.event ||
if(event.keyCode==116 || (event.ctrlKey && event.keyCode==78) || (event.shiftKey && event.keyCode==121) || (event.altKey && event.keyCode==115)){
event.keyCode =0;
event.returnvalue =
} } /** 屏蔽鼠标右键 */ document.oncontextmenu = function(){} //或者 document.onmousedown = function(event){
event = window.event ||
if(document.all && event.button == 2) {
event.returnvalue=
} } /** * 屏蔽“后退”功能(&a href="javascript:replaceLocation('http://www.google.com')" mce_href="javascript:replaceLocation('http://www.google.com')"&Google&/a&) * @param url 页面要转向的URL */ function replaceLocation(url){
document.location.replace(url); } /** 屏蔽选中网页内容 */ document.onselectstart=function(){} /** 屏蔽复制网页内容 */ document.body.oncopy = function(){} /** 屏蔽剪切网页内容 */ document.body.oncut = function(){} /** 屏蔽向网页粘贴内容 */ document.body.onpaste = function(){} /** 屏蔽拷屏(不停的清空剪贴板) */ window.setInterval('window.clipboardData("Text", "")', 100); /** * 屏蔽查看源文件( &body onload=clear()& ) */ function clear() {
var source=document.body.firstChild.
document.open();
document.close();
document.body.innerHTML = }
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
数据显示控件——GridView的运行界面,如图4-2所示。
从图中可以看出,GridView控件具有分页、排序功能,单击GridView控件下方的分页链接,可以显示指定页面的数据。在分页功能中,最左边是“前一页”链接,最右边则是“后一页”链接,并显示最前面的两个页面及最后面的两个页面,页面的导航功能比较强大。
单击GridView控件上方相关的字段链接,可以对该字段实现排序,如图4-3所示。
图4-2 GridView控件的运行界面
图4-3 GridView控件的排序
图4-3是对字段“City”实现排序后的结果,在GridView控件的最右边,还显示了每条记录所对应的“Edit”链接和“Delete”链接,单击“Edit”链接,就会转到相关的数据编辑页面;单击“Delete”链接,就会删除指定的数据。
类,用于表示分页的基本数据,PagedList&T&类的UML类图如图4-4所示。
图4-4 PagedList&T&的UML类图
从图4-4中可以看出,为实现分页功能,这里定义了分页的几个基本属性,它们分别是页面索引PageIndex(表示当前页面)、一个页面中所显示的数据记录数量PageSize、数据的总记录数量TotalItemCount及总的页面数量TotalPageCount,还定义了SortExpression属性,用于表示需要排序的字符串,IdentityColumnName属性主要表示数据表中的主键字段的名称,以便实现相关的编辑、删除等操作。
PagedList&T&类的实现代码,见代码清单4-5。
代码清单4-5 PagedList&T&的实现代码
1: public class PagedList&T& : List&T&
3: public PagedList(IEnumerable&T& items, int pageIndex, int pageSize,
int totalItemCount,string identityColumnName,
string sortExpression)
5: this.AddRange(items);
6: this.PageIndex = pageI
7: this.PageSize = pageS
8: this.SortExpression = sortE
9: this.TotalItemCount = totalItemC
10: this.TotalPageCount = (int)Math.Ceiling(
totalItemCount / (double)pageSize);
11: this.IdentityColumnName = identityColumnN
14: public int PageIndex { }
15: public int PageSize { }
16: public string SortExpression { }
17: public int TotalItemCount { }
18: public int TotalPageCount { }
19: public string IdentityColumnName { }
上述代码的实现较为简单,第14行到第19行分别定义了6个属性的读写器,这是C# 3.0中读写器的写法。
代码第3行到第12行定义了PagedList&T&类的构造函数,主要实现列表中元素的添加,以及6个属性的初始化。
在ASP.NET 3.5中,开发者可以使用LINQ关键技术,非常方便地实现各种数据的查询,为实现将LINQ的数据查询结果显示在GridView控件中,可以采用构建LINQ查询的扩展方法,这里构建了一个PageLinqExtensions类,PageLinqExtensions类的UML类图如图4-5所示。
图4-5 PageLinqExtensions的UML类图
从图中可以看出,针对LINQ查询及List类型数据实现了3个重载的扩展方法,通过设置页面索引PageIndex、页面大小PageSize、排序字符串SortExpression及主键字段名称IdentityColumnName,使得LINQ的查询数据(IQueryable)或者List类型的数据是分页列表PagedList&T&类的实例化对象,具有分页功能。
PageLinqExtensions类的实现代码,见代码清单4-6。
代码清单4-6 PageLinqExtensions的实现代码
1: public static class PageLinqExtensions
3: public static PagedList&T& ToPagedList&T&(
this IQueryable&T& allItems,
int? pageIndex,
int pageSize)
5: return ToPagedList&T&(allItems, pageIndex, pageSize,null,
String.Empty);
8: public static PagedList&T& ToPagedList&T&(
this IQueryable&T& allItems,
int? pageIndex,
int pageSize,
string identityColumnName)
10: return ToPagedList&T&(allItems, pageIndex, pageSize,
identityColumnName, String.Empty);
13: public static PagedList&T& ToPagedList&T&(
this IQueryable&T& allItems,
int? pageIndex,
int pageSize,
string identityColumnName,
string sort)
15: var truePageIndex = pageIndex ?? 0;
16: var itemIndex = truePageIndex * pageS
17: var pageOfItems = allItems.Skip(itemIndex).Take(pageSize);
18: var totalItemCount = allItems.Count();
20: return new PagedList&T&(pageOfItems, truePageIndex, pageSize,
totalItemCount,identityColumnName, sort);
在上述代码中,对LINQ的查询数据IQueryable&T&对象,定义了3个重载的扩展方法ToPagedList&T&,它们分别是第3行到第6行的扩展方法,其中有输入当前页面pageIndex和页面大小pageSize;第8行到第11行的扩展方法,其中有输入当前页面pageIndex、页面大小pageSize及主键字段名称identityColumnName;第13行到第21行的扩展方法,其中有输入当前页面pageIndex、页面大小pageSize、主键字段名称identityColumnName及排序的字符串。
通过定义PageLinqExtensions类,使得LINQ的查询数据IQueryable&T&对象可以使用ToPagedList&T&()方法,使得LINQ的查询数据具有分页、排序功能。
为了让GridView控件具有编辑、删除链接,这里专门创建了一个GridViewOption类,其UML类图如图4-6所示。
图4-6 GridViewOption的UML类图
在GridViewOption类中,定义了表头的显示文字Columns,编辑、删除链接的相关属性,例如,是否显示编辑链接ShowEditButton、编辑链接的文字EditButtonText及编辑功能的动作方法EditAction等。
GridViewOption类的实现代码,见代码清单4-7。
代码清单4-7 GridViewOption的实现代码
1: public class GridViewOption
3: private bool showEditButton =
4: private bool showDeleteButton =
6: private string editButtonText = "Edit";
7: private string deleteButtonText = "Delete";
9: private string editAction = "Edit";
10: private string deleteAction = "Delete";
12: public bool ShowEditButton
14: get { return showEditB }
15: set { showEditButton = }
18: public bool ShowDeleteButton
20: get { return showDeleteB }
21: set { showDeleteButton = }
24: public string EditButtonText
26: get { return editButtonT }
27: set { editButtonText = }
30: public string DeleteButtonText
32: get { return deleteButtonT }
33: set { deleteButtonText = }
36: public string EditAction
38: get { return editA }
39: set { editAction = }
42: public string DeleteAction
44: get { return deleteA }
45: set { deleteAction = }
48: private string[]
50: public string[] Columns
52: get { }
53: set { columns= }
上述的代码实现也比较简单,主要定义了7个基本属性的读写器,而且这7个属性还具有默认值。也就是说,在默认情况下,是显示“Edit”、“Delete”链接的,它们的动作方法名称分别为Edit和Delete。
开发者如果需要改变这些默认值,只需要重新设置GridViewOption类中的相关属性即可。
在实现了LINQ查询数据的分页、排序功能,定义了编辑、删除链接的相关属性之后,此时就需要专门实现GridView控件,也就是说,需要对HtmlHelper类实现相关的扩展方法,从而实现GridView控件的输出。
这里专门定义了一个GridViewHelper类,它的UML类图如图4-7所示。
图4-7 GridViewHelper的UML类图
在GridViewHelper类中,定义了3个重载的GridView&T&扩展方法,通过设置模型数据、显示字段,以及编辑、删除链接等参数,即可显示功能较为强大的GridView数据结果。
GridViewHelper类的实现代码,见代码清单4-8。
代码清单4-8 GridViewHelper的实现代码
1: public static class GridViewHelper
3: public static string GridView&T&(this HtmlHelper helper)
5: return GridView&T&(helper, null, null,new GridViewOption());
8: public static string GridView&T&(this HtmlHelper helper, object data)
10: return GridView&T&(helper, data, null,new GridViewOption());
13: public static string GridView&T&(this HtmlHelper helper, object data,
string[] columns, GridViewOption options)
15: var items = (IEnumerable&T&)
16: if (items == null)
17: items = (IEnumerable&T&)helper.ViewData.M
19: if (columns == null)
20: columns = typeof(T).GetProperties().Select(p =& p.Name)
.ToArray();
22: var writer = new HtmlTextWriter(new StringWriter());
23: writer.RenderBeginTag(HtmlTextWriterTag.Table);
25: writer.RenderBeginTag(HtmlTextWriterTag.Thead);
26: RenderHeader(helper, writer, columns, options);
27: writer.RenderEndTag();
29: string identityColumnName= ((PagedList&T&)items)
.IdentityColumnN
31: writer.RenderBeginTag(HtmlTextWriterTag.Tbody);
32: foreach (var item in items)
33: RenderRow&T&(helper, writer, columns, item, identityColumnName,
34: writer.RenderEndTag();
36: RenderPagerRow&T&(helper, writer, (PagedList&T&)items,
columns.Count());
38: writer.RenderEndTag();
40: return writer.InnerWriter.ToString();
43: private static void RenderHeader(HtmlHelper helper,
HtmlTextWriter writer, string[] columns, GridViewOption options)
45: writer.RenderBeginTag(HtmlTextWriterTag.Tr);
46: foreach (var columnName in columns)
48: writer.RenderBeginTag(HtmlTextWriterTag.Th);
49: var currentAction = (string)helper.ViewContext
.RouteData.Values["action"];
50: string link=
51: if (options.Columns == null)
52: link = helper.ActionLink(columnName, currentAction,
new { sort = columnName });
53: else {
54: link = helper.ActionLink(options.Columns[i], currentAction,
new { sort = columnName });
55: i++; }
56: writer.Write(link);
57: writer.RenderEndTag(); }
58: bool showEditColumn = options.ShowEditButton ||
options.ShowDeleteB
59: if (showEditColumn){
60: writer.RenderBeginTag(HtmlTextWriterTag.Th);
61: writer.Write(helper.Encode(""));
62: writer.RenderEndTag(); }
63: writer.RenderEndTag();
66: private static void RenderRow&T&(HtmlHelper helper,
HtmlTextWriter writer, string[] columns, T item ,
string identityColumnName, GridViewOption options)
68: writer.RenderBeginTag(HtmlTextWriterTag.Tr);
69: foreach (var columnName in columns)
71: writer.RenderBeginTag(HtmlTextWriterTag.Td);
72: var value = typeof(T).GetProperty(columnName)
.GetValue(item, null) ?? String.E
73: writer.Write(helper.Encode(value.ToString()));
74: writer.RenderEndTag();
77: bool showEditColumn = options.ShowEditButton ||
options.ShowDeleteB
79: if (showEditColumn)
81: var identityVaule = typeof(T).GetProperty(identityColumnName)
.GetValue(item, null);
82: writer.RenderBeginTag(HtmlTextWriterTag.Td);
84: if ( options.ShowEditButton)
86: var link = helper.ActionLink(options.EditButtonText,
options.EditAction , new { id =identityVaule });
87: writer.Write(link);
88: writer.Write(" ");
91: if (options.ShowDeleteButton )
93: var link = helper.ActionLink(options.DeleteButtonText,
options.DeleteAction , new { id = identityVaule });
94: writer.Write(link);
96: writer.RenderEndTag();
98: writer.RenderEndTag();
101: private static void RenderPagerRow&T&(HtmlHelper helper,
HtmlTextWriter writer, PagedList&T& items, int columnCount)
103: int nrOfPagesToDisplay = 10;
105: if (items.TotalPageCount == 1)
108: writer.RenderBeginTag(HtmlTextWriterTag.Tr);
109: writer.AddAttribute(HtmlTextWriterAttribute.Colspan,
columnCount.ToString());
110: writer.RenderBeginTag(HtmlTextWriterTag.Td);
111: var currentAction = (string)helper.ViewContext.RouteData
.Values["action"];
113: if (items.PageIndex &= 1)
115: var linkText = String.Format("{0}", "&&&");
116: var link = helper.ActionLink(linkText, currentAction,
new { page = items.PageIndex, sort = items.SortExpression });
117: writer.Write(link + "&");
120: int start = 0;
121: int end = items.TotalPageC
123: if (items.TotalPageCount & nrOfPagesToDisplay)
125: int middle = (int)Math.Ceiling(nrOfPagesToDisplay / 2d) - 1;
126: int below = (items.PageIndex - middle);
127: int above = (items.PageIndex + middle);
129: if (below & 4)
131: above = nrOfPagesToD
132: below = 0;
134: else if (above & (items.TotalPageCount - 4))
136: above = items.TotalPageC
137: below = (items.TotalPageCount - nrOfPagesToDisplay);
140: start =
141: end =
144: if (start & 3)
146: var linkText = String.Format("{0}", "1");
147: var link = helper.ActionLink(linkText, currentAction,
new { page = 1, sort = items.SortExpression });
148: writer.Write(link + "&");
150: linkText = String.Format("{0}", "2");
151: link = helper.ActionLink(linkText, currentAction,
new { page = 2, sort = items.SortExpression });
152: writer.Write(link + "&");
153: writer.Write(String.Format("{0}", "..."));
156: for (var i = i & i++)
158: if (i == items.PageIndex)
160: writer.Write(String.Format("&strong&{0}&/strong&&",
164: var linkText = String.Format("{0}", i + 1);
165: var link = helper.ActionLink(linkText, currentAction,
new { page = i + 1, sort = items.SortExpression });
166: writer.Write(link + "&");
170: if (end & (items.TotalPageCount - 3))
172: writer.Write(String.Format("{0}", "..."));
173: var linkText = String.Format("{0}", items.TotalPageCount - 1);
174: var link = helper.ActionLink(linkText, currentAction,
new { page = items.TotalPageCount - 1,
sort = items.SortExpression });
175: writer.Write(link + "&");
177: linkText = String.Format("{0}", items.TotalPageCount);
178: link = helper.ActionLink(linkText, currentAction,
new { page = items.TotalPageCount,
sort = items.SortExpression });
179: writer.Write(link + "&");
182: if (items.PageIndex + 2 &= items.TotalPageCount)
184: var linkText = String.Format("{0}", "&&&");
185: var link = helper.ActionLink(linkText, currentAction,
new { page = items.PageIndex + 2,
sort = items.SortExpression });
186: writer.Write(link + "&");
189: writer.RenderEndTag();
190: writer.RenderEndTag();
上述的代码比较长,不过可以分为4个部分,它们分别是第1部分的第3行到第41行、第2部分的第43行到第64行、第3部分的第66行到第99行及第4部分的第101行到第191行。
第1部分是代码的主要部分,其中定义了3个重载的GridView&T&扩展方法。在第3行到第6行的扩展方法中,不需要输入任何参数;在第8行到第11行的扩展方法中,需要输入模型数据参数;而在第13行到第41行的扩展方法中,则需要输入模型数据、显示数据字段,以及编辑、删除等相关设置。
在扩展方法中,如果没有输入模型数据,代码第17行会通过HtmlHelper类,自动获取视图ViewData中的模型数据Model;如果没有输入需要显示的数据字段,代码第20行会自动获得指定数据表的所有字段名称。
代码第22行创建HtmlTextWriter类的一个实例化对象writer,以便构建显示数据表格的HTML语句,其中第26行构建数据表的表头,第29行获得数据表中的主键字段,而代码第33行则实现数据显示的HTML语句,第36行代码构建分页界面的HTML语句。
第2部分代码主要实现数据表的表头。第45行构建表格中的多行标记,第48行则构建表格中的多列标记。第51行到第57行,用于设置表头的字段;第59行到第63行,则根据用户对编辑、删除的相关设置,判断是否显示相对应的空白表头。
第3部分代码主要实现数据表的数据显示。其中第68行到第75行显示数据表的数据,第79行到第97行用于显示数据的编辑、删除链接。
第4部分代码主要实现数据页码的显示。其中第103行设置页码显示的个数为10,第105行判断总的页码数量,如果仅为一个页面,则在106行直接退出。第113行到第118行显示最左边的页码显示部分“&&&”; 第123行到第138行计算需要显示页码的开始和结束部分;第144行到第154行显示左边的页码省略部分“…”;第156行到第168行显示中间部分的页码;第170行到第180行显示右边的页码省略部分“…”;第182行到第187行显示最右边的页码显示部分“&&&”。
LINQ是ASP.NET 3.5所提供的一种新的查询语言,开发者可以利用LINQ非常方便地构建类型安全的查询语句,例如如下语句:
var model = (from c in db.Customers select c).OrderBy(c=&c.CompanyName);
针对数据表Customers查询所有的字段,并且按照CompanyName字段排序,在实现查询的排序功能时,这里采用了Lambda表达式,实际上是一种静态的排序,也就是说,不能实现参数化的字段排序,即LINQ动态查询。
微软公司的LINQ开发团队,为了让开发者实现LINQ动态查询,即提供字符串形式的参数,专门开发了实现LINQ动态查询的类库——DynamicLibrary。
开发者可以免费使用这个类库DynamicLibrary,轻松实现LINQ动态查询,代码如下:
var model = (from c in db.Customers select c).OrderBy(sort);
在上述代码中,排序字段中输入了字符串参数sort变量,实现了LINQ的参数化,即动态排序。
关于类库DynamicLibrary的其他使用方法,请参照相关的文档说明。
在使用GridView控件时,需要在控制器中设置分页、排序参数,在视图中设置编辑、删除等链接选项,以下分别予以说明。
.控制器中设置分页、排序参数
GridView中分页、排序参数的设置,是在控制器相关的方法中实现的,例如如下代码:
var model1 = (from c in db.Customers select c).OrderBy(sort)
.ToPagedList(page, 5,"CustomerID", sort);
在上述代码中,排序字段中输入了字符串参数sort变量,实现了LINQ的动态排序,然后通过ToPagedList()扩展方法,设置了当前页面page、页面显示数为5、数据表主键字段“CustomerID”及排序参数sort。
.视图中设置编辑、删除选项
在视图页面中,代码设置如下:
&% =Html.GridView&Customers&(Model, new string[] { "CustomerID",
"CompanyName", "ContactName", "Address", "City" }),
new GridViewOption() %&
在上述代码中,由于显示的是数据表Customers中的数据,因此GridView控件的类型为Customers,其中传入了两个参数,它们分别是模型数据Model和需要显示的数据字段,上述代码的运行界面如图4-8所示。
图4-8 GridView控件的运行界面
如果需要修改编辑、删除链接的文字显示等,可以设置如下的代码:
&% =Html.GridView&Customers&(Model, new string[] { "CustomerID",
"CompanyName", "ContactName", "Address", "City" },
new GridViewOption() { EditButtonText="编辑",DeleteButtonText ="删除" })
上述代码设置了编辑、删除链接的文字分别为“编辑”和“删除”,其运行界面如图4-9所示。
图4-9 GridView控件的编辑、删除链接设置
如果需要修改表格头部字段的文字显示等,可以设置如下的代码:
&% =Html.GridView&Customers&(Model,
new string[] { "CustomerID", "CompanyName", "ContactName",
"Address", "City" },
new GridViewOption() { EditButtonText = "编辑",
DeleteButtonText = "删除",
Columns =new string[] {"编号" ,"公司名称", "联系人", "地址", "城市"} })
在上述代码中,通过GridViewOption类中的Columns属性设置了表格头部的文 字分别为“编号”、“公司名称”、“联系人”、“地址”和“城市”,其运行界面如图4-10所示。
图4-10 GridView控件的表格头部设置
这里需要说明的是,Columns属性要与其前面所设置的显示字段一致。
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
错误602:未能在sysindexes中找到数据库ID8中对象ID1的索引ID1对应的行,郁闷啊???
我在学习asp.net的时候,经常需要将别人的数据库(位于appData目录下的*.MDF文件)附加到我的
SQL server中,可是当我使用“所有任务--&附加”的时候,经常出现下列错误:
错误602:未能在sysindexes中找到数据库ID11中对象ID1的索引ID1对应的行,请对sysindexes运行
DBCC CHECKTABLE。
我郁闷啊,到底为什么啊??????
遇到这种情况首先核对一下51aspx上源码所表明的开发环境(如 VS2005+Sql2005),如果是采用sqlServer2005的话你用Sql2000附加Sql2005的数据库就会出现这种错误(解决方法:改用SqlServer2005附加一下,如果还想用Sql2000格式那就用导出sql语句等方式进行转换)
转csdn sql专家邹建的解决办法
直接restore或附加应该是不行的, 用脚本+导数据肯定没有问题。
2005转到2000的步骤步骤
1. 生成for 2000版本的数据库脚本
2005 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 生成脚本
-- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库
-- 勾选"为所选数据库中的所有对象编写脚本"
-- 在接下来的"选择脚本选项"中, 找到"为服务器版本编写脚本"项, 选择"SQL Server 2000"
-- 其他选项根据需要设置
-- 最后把脚本保存到一个 .sql 脚本文件
2. 在2000中创建目标数据库
在查询分析器(或2005的manger studio在打开脚本文件), 连接到SQL Server 2000,执行上面生成的脚本.以创建一个新的数据库
3. 将数据从2005导到2000
2005 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 导出数据
-- 在"SQL Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库
-- 在"选择目标"步骤中, 连接到 2000, 并选择步骤2新建的库
-- 在"选择源表和源视图"中, 选择所有的表
-- 最后完成
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
public ActionResult EditWebSiteUser(string key) {
AppSettingsReader reader = new AppSettingsReader();
String value = String.E value = (String)reader.GetValue(key, value.GetType()); string[] strValue = value.Split(','); string webservicesAddress = strValue[0]; string method = strValue[1]; ViewData["key"] = ViewData["webservicesAddress"] = webservicesA ViewData["method"] = return View(); }
作者:iteye_19707 发表于
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
https://blog.csdn.net/iteye_19707/article/details/
iteye_19707
StringBuilder str = new StringBuilder(); str.Append("&table class='isTable'&&tr&&th&&/th&&th&用户名&/th&&th&webservices地址&/th&&th&webservices方法名称&/th&&/tr&"); AppSettingsReader reader = new AppSettingsReader();
NameValueCollection appStgs = ConfigurationManager.AppS
string[] names = ConfigurationManager.AppSettings.AllK
String value = String.E
for (int i = 0; i & appStgs.C i++) {
string key = names[i]; if (key.IndexOf("WebSiteUser") &= 0) { value = (String)reader.GetValue(key, value.GetType()); string[] strValue = value.Split(','); string webservices = strValue[0]; string method = strValue[1]; str.Append("&tr&&td&&a style='color:Wtext-decoration:' href=\"/sdmin/EditWe

我要回帖

更多关于 my挂机是真的吗 的文章

 

随机推荐