SQL中Case的使用方法
Case具有两种格式。简单Case函数和Case搜索函数。 —简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。 还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。 —比如说,下面这段SQL,你永远无法得到“第二类”这个结果 CASE WHEN col_1 IN ( 'a', 'b') THEN '第一类' WHEN col_1 IN ('a') THEN '第二类' ELSE'其他' END 下面我们来看一下,使用Case函数都能做些什么事情。 一,已知数据按照另外一种方式进行分组,分析。 有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key) 国家(country)人口(population) 中国600 美国100 加拿大100 英国200 法国300 日本250 德国200 墨西哥50 印度250 根据这个国家人口数据,统计亚洲和北美洲的人口数量。应该得到下面这个结果。 洲人口 亚洲1100 北美洲250 其他700 想要解决这个问题,你会怎么做?生成一个带有洲Code的View,是一个解决方法,但是这样很难动态的改变统计的方式。 如果使用Case函数,SQL代码如下: SELECT SUM(population), CASE […]
View Details女孩英文名字大全
Abigail 艾比盖 希伯来 父亲很高兴;得意的父亲。 Ada, 埃达, 英国, 增光;快乐的;美丽。 Adela, 爱得拉 德国, 尊贵的;优雅的。 Adelaide, 爱得莱德, 德国, 高贵的;高贵阶级的。 Afra, 阿芙拉 希伯来 尘土 Agatha, 阿加莎 希腊, 善良而美好的 Agnes, 爱葛妮丝, 希腊,拉丁, 纯洁,高雅,贞节 Alberta 爱尔柏塔, 英国, 高贵显赫的。 Alexia, 亚莉克希亚, 希腊, 帮助 Alice, 艾丽斯 希腊, 尊贵的,真诚的 Alma, 爱玛, 拉丁,英国, 真情的、和善的、舞女。 Althea, 奥尔瑟雅, 希腊, 好预,医治者。 Alva, 阿尔娃 拉丁, 白皙的。 Amanda, 阿曼达 拉丁, 值得爱的。 Amelia, 阿蜜莉雅, 拉丁, 勤勉的,劳动的。 Amy, 艾咪, 法国, 最心爱的人,可爱的。 Anastasia, 阿娜丝塔西夏, 希腊, 再度振作起来之人,复活。 Andrea, 安德烈亚, 希腊, 有气概,美丽而优雅 Angela, 安杰拉 法国, 天使;报信者,安琪儿。 Ann, 安妮, 希伯来 优雅的,仁慈的上帝。 Anna, 安娜, 希伯来 优雅 Annabelle, 安纳贝尔, 希伯来,拉丁, 美丽的女子;可爱的;和蔼可亲的。 […]
View DetailsXml和DataSet互操作类
using System;using System.Data;using System.Xml; //***************************************// 作者: yangtang_newton//其实用DataSet操作XML,归根到底就是对DataSet里的表格,行,列等进行操作,//然后用DataSet里的东西重新写到XML中,从而实现编辑XML的目的。如果再配合上.xsd文件的话,那效果更佳。//xsd生成方法:xsd file.xml [/outputdir:directory] [/parameters:file.xml] //*************************************** namespace USTC{/// <summary>/// OperateXmlByDataSet 的摘要说明。/// </summary>public class XmlDataSet{private string strXmlPath;//这个是相对路径public XmlDataSet(string strXmlPath){ // // TODO: 在此处添加构造函数逻辑 // this.strXmlPath=strXmlPath;} #region GetDataSetByXml/// <summary>/// 读取xml直接返回DataSet/// </summary>/// <param name="strXmlPath">xml文件相对路径</param>/// <returns></returns>public DataSet GetDataSetByXml(){ try { DataSet ds = new DataSet(); ds.ReadXml(GetXmlFullPath(strXmlPath)); if(ds.Tables.Count > 0) { return ds; } return null; } catch(Exception) { return null; }}#endregion /* * 以下代码读取到一个没有排序和筛选的DataSet。 USTC.XmlDataSet XML=new XmlDataSet(@"XML/PortalCfg.xml");DataGrid1.DataSource = XML.GetDataSetByXml();DataGrid1.DataBind();//以下代码读到的数据是经过筛选和排序的:DataGrid1.DataSource =XML.GetDataViewByXml("name = 'Asp.net’", //条件:name列值为Asp.net"peopleNum desc"); //按peopleNum列降序排列DataGrid1.DataBind(); */ #region GetDataViewByXml/// <summary>/// 读取Xml返回一个经排序或筛选后的DataView/// </summary>/// <param name="strXmlPath"></param>/// <param name="strWhere">筛选条件,如:"name = […]
View DetailsC# DataSet,ListView和XML文件互操作的例子
DataSet和XML文件互操作的例子 //读取XML文件到DataSetDataSet ds = new DataSet();MyXmlPath = "C:\\Message.xml";FileStream fs = new FileStream(MyXmlPath, FileMode.Open);ds.ReadXml(fs, XmlReadMode.ReadSchema);fs.Close();//筛选行存入DataSetDataRow[] FoundRows;string Expression = "AREA IN ('" + Area + "',")";string SortOrder = "DAY DESC";FoundRows = ds.Tables[0].Select(Expression, SortOrder);DataTable Mydt = new DataTable();Mydt.Columns.Add("FKEY");Mydt.Columns.Add("IIIII");Mydt.Columns.Add("NAME");Mydt.Columns.Add("AREA");Mydt.Columns.Add("X");Mydt.Columns.Add("Y");Mydt.Columns.Add("BKIND");Mydt.Columns.Add("SKIND");Mydt.Columns.Add("DAY");Mydt.Columns.Add("ETIME");Mydt.Columns.Add("TYPE");Mydt.Columns.Add("MAIN");Mydt.Columns.Add("TTIME");foreach (DataRow dr in FoundRows){Mydt.Rows.Add(dr.ItemArray);}DataSet Myds = new DataSet();Myds.Tables.Add(Mydt);//保存到XML文件Myds.WriteXml(MyXmlPath, XmlWriteMode.WriteSchema); //ListView的一个例子XmlDocument doc = new XmlDocument();XmlDeclaration Declaration = doc.CreateXmlDeclaration("1.0","GB2312","");doc.AppendChild(Declaration);XmlElement xe = doc.CreateElement("Infos");doc.AppendChild(xe);for(int i = 0;i < listview.Items.Count;i++){XmlNode parent = doc.CreateElement("Info" + i.ToString());ListViewItem temp = listview.Items[i];for(int j = 0;j < temp.SubItems.Count;j++){string s = temp.SubItems[j].Text;XmlNode node = doc.CreateElement(s);node.InnerText = s;parent.AppendChild(node);}doc.AppendChild(parent);}doc.Save(FilePath);
View Details在C#中编写多线程应用程序
以前在使用VB来实现多线程的时候,发现有一定的难度。虽然也有这样那样的方法,但都不尽人意,但在C#中,要编写多线程应用程序却相当的简单。这篇文章将作简要的介绍,以起到抛砖引玉的作用! .NET将关于多线程的功能定义在System.Threading名字空间中。因此,要使用多线程,必须先声明引用此名字空间(using System.Threading;)。 即使你没有编写多线程应用程序的经验,也可能听说过“启动线程”“杀死线程”这些词,其实除了这两个外,涉及多线程方面的还有诸如“暂停线程”“优先级”“挂起线程”“恢复线程”等等。下面将一个一个的解释。 1.启动线程 顾名思义,“启动线程”就是新建并启动一个线程的意思,如下代码可实现: Thread thread1 = new Thread(new ThreadStart( Count)); 其中的 Count 是将要被新线程执行的函数。 2.杀死线程 “杀死线程”就是将一线程斩草除根,为了不白费力气,在杀死一个线程前最好先判断它是否还活着(通过 IsAlive 属性),然后就可以调用 Abort 方法来杀死此线程。 3.暂停线程 它的意思就是让一个正在运行的线程休眠一段时间。如 thread.Sleep(1000); 就是让线程休眠1秒钟。 4.优先级 这个用不着解释了。Thread类中有一个ThreadPriority属性,它用来设置优先级,但不能保证操作系统会接受该优先级。一个线程的优先级可分为5种:Normal, AboveNormal, BelowNormal, Highest, Lowest。具体实现例子如下: thread.Priority = ThreadPriority.Highest; 5.挂起线程 Thread类的Suspend方法用来挂起线程,直到调用Resume,此线程才可以继续执行。如果线程已经挂起,那就不会起作用。 if (thread.ThreadState = ThreadState.Running) { thread.Suspend(); } 6.恢复线程 用来恢复已经挂起的线程,以让它继续执行,如果线程没挂起,也不会起作用。 if (thread.ThreadState = ThreadState.Suspended) { thread.Resume(); } 下面将列出一个例子,以说明简单的线程处理功能。此例子来自于帮助文档。 using System; using System.Threading; // Simple threading scenario: Start a static method running // on a second thread. public class ThreadExample { // The ThreadProc method is called when the thread starts. // It […]
View Details线程间操作无效: 从不是创建控件 [控件名称] 的线程访问它
我现在正在使用vs2010英文版,平常也很少看那些有的没的文字,而且在写程序的时候很”明智”的异常捕获并且写进日志里去,所以没有出现那个可爱的调试状态下出现异常的那个小框框. 我在上网查了一会儿,有人说直接设置控件的CheckForIllegalCrossThreadCalls属性为false,但是因为可能的不安全因素所以还是不用的好.当然还有写一个委托来同步调用.但是我觉得它有点麻烦,就放弃用委托同步了. 后来我搞了好多种写法,都摆脱不了这个怨念,最终也摆脱了异常捕获并抛出了这个小框框. 框框上明确的说道:”线程间操作无效: 从不是创建控件 [控件名称] 的线程访问它。”但是在框框的Suggestion列表中显示出了一条项目,大意是:”如何:对 Windows 窗体控件进行线程安全调用.”,我点开它,并且跳进了MSDN. 原来在MSDN上就有教咱如果夸线程操作控件啊.亏我还Google半天呢. MSDN上的办法就是使用委托来同步调用控件的.具体方法我也就不卖关子了.因为MSDN上的代码比较繁多,所以我稍微改进了一下. //首先声明一个委托. delegate void SetValueDelegate(int val); //模仿程序中的跨线程调用 public void Progress() { Thread t = new Thread(() => { //跨线程由此开始 SetValue(100); }); t.Start(); } //关键部分在这里 public void SetValue(int val) { //InvokeRequired属性当非创建本控件线程操作的时候 //它返回true,此时使用窗体(该控件的创建者)的Invoke方法创建同步调用. //妙哉,妙哉! if (ProgressBar1.InvokeRequired) { var svd = new SetValueDelegate(SetValue); this.Invoke(svd, val); } else { ProgressBar1.Value = val; } } 好了,就是这样,非讨论文章就越精炼越好.希望能帮到你. 最后附上MSDN的地址:这里
View Detailswindow.event.keyCode兼容Firefox
1.window.event.keyCode的用法: 例子、<input type="text" onkeydown="javaScript:if(window.event.keyCode==13) kenNumIE();" /> <script language="javascript" type="text/javascript"> function kenNumIE(){ alert("你按的是回车键!"); } </script> 但是该方法只对IE有效,原因是Firefox的window对象没有event属性,所以window.event是不存在的,Firefox只能在事件句柄函数的第一个参数获取事件对象。2.兼容Firefox的方法:<input type="text" onkeydown="return keyNumAll(event);" > <script language="javascript" type="text/javascript"> function keyNumAll(evt){ var k=window.event?evt.keyCode:evt.which; if(k == 13){ alert("你按的是回车键!"); } } </script> 这样,当你按回车键时,就可以触发keyNumAll(event)事件了。 附:window.event.keyCode 集合(键盘字符的Ascii): XML/HTML代码 Ascii 代码表 Ascii 0 {Nulo, Sem Som} Ascii 1 Ascii 2 Ascii 3 Ascii 4 Ascii 5 Ascii 6 Ascii 7 Ascii 8 {BackSpace} Ascii 9 {Tab} Ascii 10 Ascii 11 Ascii 12 Ascii 13 {Enter} Ascii 14 Ascii 15 Ascii 16 {Shift} Ascii 17 {CTRL} Ascii 18 {ALT} Ascii 19 Ascii 20 {CapsLock} Ascii 21 Ascii 22 Ascii 23 Ascii 24 Ascii 25 Ascii 26 Ascii 27 Ascii 28 Ascii 29 – Ascii 30 – Ascii 31 Ascii 32 {Espa?o} ! Ascii 33 " Ascii 34 # Ascii 35 $ Ascii 36 % Ascii 37 & Ascii 38 ' Ascii 39 ( Ascii 40 ) Ascii 41 * Ascii 42 + Ascii 43 , Ascii 44 – Ascii 45 . Ascii 46 / Ascii 47 0 Ascii 48 1 Ascii 49 […]
View Details中国的现状
我转发此文并不是想破坏和谐,我只是想让祖国越来越好,希望那些应该看到此文的人看到。在一个国家发展的历程中不能总是只看到鲜花和掌声吧? 李一帆案判决结果:李一帆因交通肇事罪判有期徒刑三年,监外执行。赔偿被害人家属三十万伤者五万。李一帆被实习单位开除,李刚被调往其它分局做副局长。张晶晶已经给河北大学及保定公安局北市区分局软禁在医院,禁止媒体记者采访。同时河北大学已经将死者和伤者的同一宿舍室友女生(现大一)全部保研。转发你所有的群,让人都看看天理何在!!! 上海静安大火快速抓捕8名无证电焊工再一次验证了韩寒所说的,“中国现阶段的主要矛盾是人民群众日益增长的智商和官员们不断下降的道德之间的矛盾。” 农民工干着最苦最累的活,拿着最低的工资,在官员眼里又多了一项功能“替罪羊”。 电焊工,农民工,临时工,挣的是卖白菜的钱,顶的是卖白粉的罪。 上海当局用了250个场馆、6个月的时间、7300万人来宣扬“城市让生活更美好”,而1幢大楼、4个小时、53位亡灵证明了这不过是一个口号。 一个国家的文明程度,不在于能不能办奥运会,不在于能不能办世博会,能不能办亚运会,也不在于能买多少美国垃圾国债,更不在于能去国外几十亿几百亿下订单,而是在于让公民坐在家里不会被烧死、上街摆摊不会被扇耳光,走路不会被李刚家的宝马车撞,想吃什么都不用担心会有毒。 这个世界就是:不吸烟的得肺癌,不工作的做老板,不爱国的当大官;真正的爱不能要,真正的事不能干,真正的人不能做;需要书的读不起,需要房的买不起,需要人的娶不起;有文化的留不了学,有能力的找不到活,有良知的赚不了钱。 三聚氰胺害了那么多儿童,最后抓了几个养奶牛的;央视大火烧掉10几亿,抓了几个运烟火的;上海静安大火烧死53人,是4个电焊工的责任!跟西游记一样,有背景的妖怪都被带走了,没背景的妖怪都被乱棍打死 豹子办了个澡堂子,包给狐狸,狐狸包给松鼠,松鼠雇几只蚂蚁搓澡接客。有一天,狮子去洗澡,掉脸盆里淹死了。。。。虎大王震怒,派警察调查情况,骂了狐狸,打了松鼠,最后,抓了8只蚂蚁。。。。因为他们,竟然没搓澡证! 最近,国家某部公布了一项统计数据,告诉人们:你要不是三大式人物(大款,大官,大腕)而想在北京买套100平方米总价300万的房,社会阶层所付出的代价请看:1 农民:种三亩地每亩纯收入400元的话要从唐朝开始至今才能凑齐(还不能有灾年);2 工人:每月工资1500元需从鸦片战争上班至今(双休日不能休);3 白领:年薪6万,需从1960年上班就拿这么多钱至今不吃不喝(取消法定假日);4 抢劫犯:连续作案2500次(必须事主是白领)约30年。5:妓女:连续接客10000次,以每天都接一次客,需备战10000天,从18岁起按此频率接客到46岁(中间还不能来例假)以上还不算装修、家具、家电等等费用中国的现状(经典) 1、ATM取出假钱—>银行无责 2、网上银行被盗—>储户责任 3、银行多给了钱—>储户义务归还 4、银行少给了钱—>离开柜台概不负责 5、ATM机出现故障少给钱—>用户负责 6、ATM机出现故障多给钱—>用户盗窃 7、广东开平银行行长贪污4亿—>判2年 8、ATM多吐7万给老百姓许霆—>判无期 声明:转发不会送人民币,但如果觉得作为消费者,全中国十三亿储户不公平的,请转发 ,有多少群转发多少群 中国现状: 生不起,剖腹一刀五千起; 读不起,选个学校三万起; 住不起,二万多元一平米; 老婆不是娶不起,没房没车谁嫁你? 养不起,父母下岗儿下地; 病不起,药费利润十倍起; 活不起,一月辛劳一千几; 死不起,火化下葬三万几。 总结(八个大字): 求生不得,求死不能 --多传传,让领导人们看看, 就不信传不到中央胡书记与温总理那里去。 有群的都转发 加一句:谁看到谁最少转发一个群,转发2个以上群的愿他买彩票中500万 教育:希望进去,绝望出来;医疗:小病进去,大病出来;房产:蜗居进去,房奴出来;演艺:玉女进去,小姐出来;信访:窦娥进去,疯子出来;官场:海瑞进去,和绅出来;煤窑:蹲着进去,躺着出来;大学:校花进去,残花出来!股市:杨百万进去,杨百劳出来,宝马进去,自行车出来,西装革履进去,三角裤出来。老百姓在思考,为啥玩不过政府呢?原因如下:1、你和他讲道理,他和你耍流氓;2、你和他耍流氓,他和你讲法制;3、你和他讲法制,他和你讲政治;4、你和他讲政治,他和你讲国情;5、你和他讲国情,他和你讲接轨;6、你和他讲接轨,他和你讲文化;7、你和他讲文化,他和你讲孔子;8、你和他讲孔子,他和你讲老子;9、你和他讲老子,他给你装孙子
View Details美国大学珍藏中国老照片首次曝光
美国南加利福尼亚州大学图书馆珍藏的旧时中国老照片,照片多为后期上色,拍摄时间1900-1923年间。看着这些收藏于南加利福尼亚州立大学图书馆里的照片,似乎能触摸到那遥远的历史的声音。大部分照片为首次曝光。 喜欢看古装片,觉得古代是多少的美好。殊不知古代的老百姓是多么的困苦不堪。古装片大多是演王公贵族或江湖之间的恩怨,其中不乏杜撰的成分。唉,哀叹……
View Details去掉ecshop2.7.0底部版权Powered by ecshop
在ecshop2.7.0开始,底部版权Powered by ecshop如果删除了之后,就会发现Powered by ecshop到处乱跑,如何彻底删除Powered by ecshop版权呢。首先,需要打开js/common.js删除以下js函数. onload = function(){ var link_arr = document.getElementsByTagName(String.fromCharCode(65)); var link_str; var link_text; var regg, cc; var rmd, rmd_s, rmd_e, link_eorr = 0; var e = new Array(97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122 ); try { for(var i = 0; i < link_arr.length; i++) { link_str = link_arr[i].href; if (link_str.indexOf(String.fromCharCode(e[22], 119, 119, 46, e[4], 99, e[18], e[7], e[14], e[15], […]
View Details