sql中case语句的用法浅谈

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`</pre>
</div>

想要解决这个问题,你会怎么做?生成一个带有洲Code的View,是一个解决方法,但是这样很难动态的改变统计的方式。
如果使用Case函数,SQL代码如下:

SELECT SUM(population),
CASE country
WHEN '中国' THEN '亚洲'
WHEN '印度' THEN '亚洲'
WHEN '日本' THEN '亚洲'
WHEN '美国' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END
FROM Table_A
GROUP BY CASE country
WHEN '中国' THEN '亚洲'
WHEN '印度' THEN '亚洲'
WHEN '日本' THEN '亚洲'
WHEN '美国' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END;`</pre>
</div>

同样的,我们也可以用这个方法来判断工资的等级,并统计每一等级的人数。SQL代码如下;

<div>
<pre>`SELECT
CASE WHEN salary &lt;= 500 THEN '1' WHEN salary &gt; 500 AND salary &lt;= 600 THEN '2' WHEN salary &gt; 600 AND salary &lt;= 800 THEN '3' WHEN salary &gt; 800 AND salary &lt;= 1000 THEN '4'
ELSE NULL END salary_class,
COUNT(*)
FROM Table_A
GROUP BY
CASE WHEN salary &lt;= 500 THEN '1' WHEN salary &gt; 500 AND salary &lt;= 600 THEN '2' WHEN salary &gt; 600 AND salary &lt;= 800 THEN '3' WHEN salary &gt; 800 AND salary &lt;= 1000 THEN '4' ELSE NULL END; `</pre>
</div>

二,用一个SQL语句完成不同条件的分组。

有如下数据

国家(country)性别(sex)人口(population )  
中国          1           340 
中国          2           260 
美国          1           45 
美国          2           55 
加拿大         1           51 
加拿大         2           49 
英国          1           40 
英国          2           60 

按照国家和性别进行分组,得出结果如下

国家      男       女 
中国      340     260 
美国      45      55 
加拿大     51      49 
英国      40      60`</pre>
</div>

普通情况下,用UNION也可以实现用一条语句进行查询。但是那样增加消耗(两个Select部分),而且SQL语句会比较长。 下面是一个是用Case函数来完成这个功能的例子

代码如下:
<div>
<pre>`SELECT country, 
SUM( CASE WHEN sex = '1' 
    THEN population ELSE 0 END), --男性人口 
SUM( CASE WHEN sex = '2' 
    THEN population ELSE 0 END) --女性人口 
FROM Table_A GROUP BY country; `</pre>
</div>

这样我们使用Select,完成对二维表的输出形式,充分显示了Case函数的强大。 三,在Check中使用Case函数。 在Check中使用Case函数在很多情况下都是非常不错的解决方法。可能有很多人根本就不用Check,那么我建议你在看过下面的例子之后也尝试一下在SQL中使用Check。 下面我们来举个例子 公司A,这个公司有个规定,女职员的工资必须高于块。如果用Check和Case来表现的话,代码如下:


CONSTRAINT check_salary 
    CHECK ( CASE WHEN sex = '2' 
                 THEN CASE WHEN salary &gt; 1000
                 THEN 1 ELSE 0 END
                 ELSE 1 END = 1
         )


如果单纯使用Check,如下所示
复制代码 代码如下:

CONSTRAINT check_salary
     CHECK( sex = '2' AND salary &gt; 1000 )


女职员的条件倒是符合了,男职员就无法输入了。
四,根据条件有选择的UPDATE。
例,有如下更新条件
工资以上的职员,工资减少%
工资在到之间的职员,工资增加%
很容易考虑的是选择执行两次UPDATE语句,如下所示
代码如下:

--条件
    UPDATE Personnel
    SET salary = salary * 0.9
    WHERE salary &gt;= 5000;
    --条件
    UPDATE Personnel
    SET salary = salary * 1.15
    WHERE salary &gt;= 2000 AND salary &lt; 4600;


但是事情没有想象得那么简单,假设有个人工资块。首先,按照条件,工资减少%,变成工资。接下来运行第二个SQL时候,因为这个人的工资是在到的范围之内,需增加%,最后这个人的工资结果是,不但没有减少,反而增加了。如果要是反过来执行,那么工资的人相反会变成减少工资。暂且不管这个规章是多么荒诞,如果想要一个SQL 语句实现这个功能的话,我们需要用到Case函数。代码如下:

代码如下:
<div>
<pre>`UPDATE Personnel SET salary = CASE WHEN salary &gt;= 5000
THEN salary * 0.9
WHEN salary &gt;= 2000 AND salary &lt; 4600
THEN salary * 1.15
ELSE salary END;`</pre>
</div>

这里要注意一点,最后一行的ELSE salary是必需的,要是没有这行,不符合这两个条件的人的工资将会被写成NUll,那可就大事不妙了。在Case函数中Else部分的默认值是NULL,这点是需要注意的地方。
这种方法还可以在很多地方使用,比如说变更主键这种累活。
一般情况下,要想把两条数据的Primary key,a和b交换,需要经过临时存储,拷贝,读回数据的三个过程,要是使用Case函数的话,一切都变得简单多了。


p_key   col_1   col_2
    a       1       张三
    b       2       李四
    c       3       王五


假设有如上数据,需要把主键a和b相互交换。用Case函数来实现的话,代码如下
复制代码 代码如下:

UPDATE SomeTable
    SET p_key = CASE WHEN p_key = 'a'
    THEN 'b'
    WHEN p_key = 'b'
    THEN 'a'
    ELSE p_key END
    WHERE p_key IN ('a', 'b');


同样的也可以交换两个Unique key。需要注意的是,如果有需要交换主键的情况发生,多半是当初对这个表的设计进行得不够到位,建议检查表的设计是否妥当。
五,两个表数据是否一致的检查。
Case函数不同于DECODE函数。在Case函数中,可以使用BETWEEN,LIKE,IS NULL,IN,EXISTS等等。比如说使用IN,EXISTS,可以进行子查询,从而实现更多的功能。
下面具个例子来说明,有两个表,tbl_A,tbl_B,两个表中都有keyCol列。现在我们对两个表进行比较,tbl_A中的keyCol列的数据如果在tbl_B的keyCol列的数据中可以找到,返回结果’Matched’,如果没有找到,返回结果’Unmatched’。
要实现下面这个功能,可以使用下面两条语句
代码如下:

--使用IN的时候
    SELECT keyCol,
    CASE WHEN keyCol IN ( SELECT keyCol FROM tbl_B )
    THEN 'Matched'
    ELSE 'Unmatched' END Label
    FROM tbl_A;
    --使用EXISTS的时候
    SELECT keyCol,
    CASE WHEN EXISTS ( SELECT * FROM tbl_B
    WHERE tbl_A.keyCol = tbl_B.keyCol )
    THEN 'Matched'
    ELSE 'Unmatched' END Label
    FROM tbl_A;


使用IN和EXISTS的结果是相同的。也可以使用NOT IN和NOT EXISTS,但是这个时候要注意NULL的情况。
六,在Case函数中使用合计函数
假设有下面一个表

学号(std_id)  课程ID(class_id)   课程名(class_name)    主修flag(main_class_flg)
    100             1               经济学                     Y
    100             2               历史学                     N
    200             2               历史学                     N
    200             3               考古学                     Y
    200             4               计算机                     N
    300             4               计算机                     N
    400             5               化学                      N
    500             6               数学                      N


有的学生选择了同时修几门课程(100,200)也有的学生只选择了一门课程(300,400,500)。选修多门课程的学生,要选择一门课程作为主修,主修flag里面写入Y。只选择一门课程的学生,主修flag为N(实际上要是写入Y的话,就没有下面的麻烦事了,为了举例子,还请多多包含)。
现在我们要按照下面两个条件对这个表进行查询
只选修一门课程的人,返回那门课程的ID
选修多门课程的人,返回所选的主课程ID
简单的想法就是,执行两条不同的SQL语句进行查询。

条件
代码如下:
    --条件:只选择了一门课程的学生
SELECT std_id, MAX(class_id) AS main_class
FROM Studentclass
GROUP BY std_id
HAVING COUNT(*) = 1;

执行结果

STD_ID MAIN_class
------ ----------
300 4
400 5
500 6
条件
代码如下:

–条件:选择多门课程的学生

SELECT std_id, class_id AS main_class
FROM Studentclass
WHERE main_class_flg = 'Y' ;
执行结果
STD_ID MAIN_class
------ ----------
100 1
200 3

如果使用Case函数,我们只要一条SQL语句就可以解决问题,具体如下所示

复制代码 代码如下:
<div>
<pre>`SELECT std_id,
CASE WHEN COUNT(*) = 1 --只选择一门课程的学生的情况
THEN MAX(class_id)
ELSE MAX(CASE WHEN main_class_flg = 'Y'
THEN class_id
ELSE NULL END
)
END AS main_class
FROM Studentclass
GROUP BY std_id;

运行结果

STD_ID MAIN_class
------ ----------
100     1
200     3
300     4
400     5
500     6

通过在Case函数中嵌套Case函数,在合计函数中使用Case函数等方法,我们可以轻松的解决这个问题。使用Case函数给我们带来了更大的自由度。

最后提醒一下使用Case函数的新手注意不要犯下面的错误
代码如下:


`CASE col_1
WHEN 1   THEN ‘Right’
WHEN NULL THEN ‘Wrong’
END


在这个语句中When Null这一行总是返回unknown,所以永远不会出现Wrong的情况。因为这句可以替换成WHEN col_1 = NULL,这是一个错误的用法,这个时候我们应该选择用WHEN col_1 IS NULL。

转自 http://www.jb51.net/article/36900.htm

.NET 日期转化为获取时间戳

通过DateTime获取当前时间类,通过其属性查询具体的时间戳

 

以获取date的时间戳为例:

long intResult = 0;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
intResult = long.Parse((querydate.Date - startTime).TotalSeconds.ToString());
buildNumber.Add(intResult * 1000, queryTimes);

常用资源网站

请点击一下广告,支持本站工作

  

网盘搜索

百度网盘搜:http://so.baiduyun.me/

壹搜:http://www.yisou.me/

西林街:http://www.xilinjie.com/

云搜:http://www.daysou.com/

360: https://yunpan.360.cn/

BT资源站

BT搜搜:http://www.btsoso.com/

OKBT:http://okbt.net/

谷歌

镜像谷歌1:http://g2.wen.lu/

镜像谷歌2:http://www.ggss.cf/?gws_rd=ssl

小幻镜像:http://gc.ihuan.me/

谷歌学术1:http://scholar.glgoo.org/

影视

电影

高清Mp4:http://www.mp4ba.com/

BT电影联盟:http://www.btchina.us/

蓝影网:http://www.lanyingwang.com/

蓝光电影网:http://www.hd1080.cn/

美剧

天天美剧:http://www.ttmeiju.com/

美剧天堂:http://www.meijutt.com/

EZTV片源:http://eztv.ag/

MAG磁力:http://cili009.com/

动漫

动漫花园资源网:http://dmhy.dandanplay.com/

爱恋动漫:http://www.kissub.org/

嘀喱嘀喱:http://www.dilidili.com/

动漫1080P: http://www.dm1080p.com/

  记录片

纪录片天堂:http://www.jlpcn.net/

记录片之家:http://www.jlpzj.net/forum.php

老记录:http://www.laojilu.com/

公开课记录片:http://www.opclass.com/

电影种子站

BT天堂:http://www.iloveyoulong.com/

BT之家:http://www.btbbt.cc/

Kickass:http://kat.cr/

RARBG:http://rarbg.to/torrents.php

字幕站

SubHD:http://subhd.com/

伪射手网:http://sub.makedie.me/

163字幕网:http://www.163sub.com/index.htm

第三楼字幕网:http://www.disanlou.org/

学习

电子书

读远:http://readcolor.com/

Jiumo E-book:http://www.jiumodiary.com/

Kindle专用搜索:http://forfrigg.com/#gsc.tab=0

kindle网址总览:http://kindleren.com/portal.php?mod=topic&topicid=1

杂志刊物

PDF之家:http://www.pdfzj.com/

五花八门杂志:http://www.i5h8m.com/category/share/magazine

高清杂志网:http://www.gqzzw.com/

Bucee杂志馆:http://vvzazhi.com/

PPT模板

瑞普PPT:http://www.rapidbbs.cn/

无忧PPT:http://www.51ppt.com.cn/

逼格PPT:http://www.tretars.com/

我爱PPT:http://iloveppt.cn/forum.php?mod=forumdisplay%fid=51

图片库

全景图片:http://www.quanjing.com/

Eput图片网:http://eput.com/

500px摄影:http://500px.com/

pixabay:http://www.pixabay.com/


转自 http://www.cuichongyang.cn/index.php/2016/07/20/changyongziyuanwangzhan/

100部高清欧美剧资源[360网盘]

转自 http://bbs.meizu.cn/thread-5800961-1-1.html 为支持网站正常运行,请点击一下广告

 

001 越狱第一季: http://yunpan.cn/cKSNUHAVpKnG2访问密码 072b
002 越狱第二季: http://yunpan.cn/cKSNDU7hquTIT访问密码 f865
003 越狱第三季: http://yunpan.cn/cKSNp6wIt3ZT2问密码 547f
004 越狱第四季: http://yunpan.cn/cKSNIF6x5Me2j访问密码 1788
005 替身标靶第一季: http://yunpan.cn/cKRFNUWfAwWDE访问密码 8a64
006 替身标靶第二季: http://yunpan.cn/cKRFT2T2sAhCc访问密码 b5c7
007 秘碟夫妻: http://yunpan.cn/cKR5QbUq8AihQ 访问密码 e657
008 行尸走肉第一季: http://yunpan.cn/cKR5IDnY6A9ky访问密码 062f
009 行尸走肉第二季: http://yunpan.cn/cKRe8vf5mKMVJ访问密码 8921
010 行尸走肉第三季: http://yunpan.cn/cKReeqsxWg5j9访问密码 c646
011 行尸走肉第四季: http://yunpan.cn/cKReUZtkMydHL访问密码 8a7f
012 行尸走肉第五季: http://yunpan.cn/cKReTJhbEfjIM访问密码 6513
013 绝命毒师第一季: http://yunpan.cn/cKRt63WeFXSCa访问密码 8ce7
014 绝命毒师第二季: http://yunpan.cn/cKRtM9RIyXwDz访问密码 e501
015 绝命毒师第三季: http://yunpan.cn/cKRtkp49nsZiE访问密码 ee5d
016 绝命毒师第四季: http://yunpan.cn/cKRtvbgMtnFCf访问密码 ce27
017 绝命毒师第五季: http://yunpan.cn/cKRt25jHea44y访问密码 e83c
018 都市侠盗第一季: http://yunpan.cn/cKRXLD5JGmpmC访问密码 7208
019 都市侠盗第二季: http://yunpan.cn/cKRXuUjUL8Ziw访问密码 690a
020 都市侠盗第三季: http://yunpan.cn/cKRXr4vtidFBC访问密码 0c3a
021 都市侠盗第四季: http://yunpan.cn/cKRXxe8IKhV8B访问密码 3375
022 都市侠盗第五季: http://yunpan.cn/cKRXYxMR67Tdf访问密码 68f5
023 斯巴达克斯之血与沙:http://yunpan.cn/cKRGGTTLH4JVR访问密码 e9d4
024 斯巴达克斯之复仇:http://yunpan.cn/cKRGnCx5niYet访问密码 336d
025 斯巴达克斯之诅咒者之战:http://yunpan.cn/cKRGbTw5fB2Z4访问密码 d897
026 斯巴达克斯之竞技场之神:http://yunpan.cn/cKRGGs9vH7VkF访问密码 6347
027 生活大爆炸第一季: http://yunpan.cn/cKRbdvXIQdLcJ访问密码 0325
028 生活大爆炸第二季: http://yunpan.cn/cKRbmk7waaV7r访问密码 6fea
029 生活大爆炸第三季: http://yunpan.cn/cKRbHkmMUHqB9访问密码 e4dd
030 生活大爆炸第四季: http://yunpan.cn/cKRbFuFnaYIIZ访问密码 929c
031 生活大爆炸第五季: http://yunpan.cn/cKRbuB3pTUdLi访问密码 c660
032 生活大爆炸第六季: http://yunpan.cn/cKRbrxB8TkDVc访问密码 6b44
033 生活大爆炸第七季: http://yunpan.cn/cKRbxH5uiGCmx访问密码 6c9f
034 生活大爆炸第八季: http://yunpan.cn/cKRbYytkKIqWb访问密码 2774
035 吸血鬼日记第一季: http://yunpan.cn/cKR7qnMkj6KyB访问密码 48d4
036 吸血鬼日记第二季: http://yunpan.cn/cKR7ScBLbpGgn访问密码 5dfe
037 吸血鬼日记第三季: http://yunpan.cn/cKR7RQb5kCjhx访问密码 f124
038 吸血鬼日记第四季: http://yunpan.cn/cKR7BQgaujs5T访问密码 7030
039 吸血鬼日记第五季: http://yunpan.cn/cKR7673B3Jb8Y访问密码 7295
040 吸血鬼日记第六季: http://yunpan.cn/cKR7XpvP95cfz访问密码 afa0
041 冰与火之歌.权力的游戏第一季: http://yunpan.cn/cKBg6u94JBx4L访问密码 6521
042 冰与火之歌.权力的游戏第二季: http://yunpan.cn/cKBgMdTEJWkpf访问密码 2b08
043 冰与火之歌.权力的游戏第三季: http://yunpan.cn/cKBgkACU3ZEuI访问密码 a24c
044 冰与火之歌.权力的游戏第四季: http://yunpan.cn/cKBgk9NxXf2vZ访问密码 ee7f
045 真爱如血第一季: http://yunpan.cn/cKBss859BpKrc访问密码 8ca9
046 真爱如血第二季: http://yunpan.cn/cKBsAYtht99VI访问密码 6922
047 真爱如血第三季: http://yunpan.cn/cKBsfsBaHSdAW访问密码 d656
048 真爱如血第四季: http://yunpan.cn/cKBsfbq2e4Qww访问密码 56f4
049 真爱如血第五季: http://yunpan.cn/cKBsyvSb4U4ap访问密码 97bd
050 真爱如血第六季: http://yunpan.cn/cKBsKHxrmFcim问密码 737f
051 真爱如血第七季: http://yunpan.cn/cKBsKiwx4V6rG访问密码 9161
052 V星入侵第一季: http://yunpan.cn/cKByH7aEqz64U访问密码 9681
053 V星入侵第二季: http://yunpan.cn/cKByLyrMg4m87访问密码 4607
054 傲骨贤妻第一季: http://yunpan.cn/cKBy9zG7QCWzL访问密码 4dd4
055 傲骨贤妻第二季: http://yunpan.cn/cKByUXNbQmwX3访问密码 d5b3
056 傲骨贤妻第三季: http://yunpan.cn/cKBypVgHUvwA2访问密码 da37
057 傲骨贤妻第四季: http://yunpan.cn/cKBy4AjsUNZEA访问密码 aa4f
058 傲骨贤妻第五季: http://yunpan.cn/cKBy44QQaSQmm访问密码 a4f7
059 傲骨贤妻第六季: http://yunpan.cn/cKByIedYjtfqB访问密码 baec
060 超感警探第一季: http://yunpan.cn/cK6HfWxdEHdq6访问密码 8c4c
061 超感警探第二季: http://yunpan.cn/cK6HJABUjiPdG访问密码 a3d2
062 超感警探第三季: http://yunpan.cn/cK6HZs9KCTBxv访问密码 5a83
063 超感警探第四季: http://yunpan.cn/cK6HZTi4Csdn4访问密码 7626
064 超感警探第五季: http://yunpan.cn/cK6HVGCAZI6X5访问密码 3f6e
065 超感警探第六季: http://yunpan.cn/cK6HjSI5kHR4Q访问密码 3fb4
066 超感警探第七季: http://yunpan.cn/cKItIwZwMdIQW访问密码 53a8
067 广告狂人第一季: http://yunpan.cn/cK6Feu77x3gI4访问密码 02a5
068 广告狂人第二季: http://yunpan.cn/cK6FtM6R9aIyg访问密码 c4c9
069 广告狂人第三季: http://yunpan.cn/cK6Fn8NxrkEIT访问密码 fa76
070 广告狂人第四季: http://yunpan.cn/cK6FX8VXVhHjw访问密码 22cf
071 广告狂人第五季: http://yunpan.cn/cK6FbR2UhfyWL访问密码 87fd
072 广告狂人第六季: http://yunpan.cn/cK6F9S4JGSGi2访问密码 c54e
073 广告狂人第七季: http://yunpan.cn/cK6FUkdsLWN2A访问密码 beda
074 大西洋帝国第一季: http://yunpan.cn/cK6LIgmweG82q访问密码 7b45
075 大西洋帝国第二季: http://yunpan.cn/cK6LNXSJpYqkT访问密码 ee1e
076 大西洋帝国第三季: http://yunpan.cn/cK6LiMBLszyHI访问密码 077c
077 大西洋帝国第四季: http://yunpan.cn/cK6LTq5fsBd33访问密码 b908
078 大西洋帝国第五季: http://yunpan.cn/cK6LhLUzsWYLy访问密码 edee
079 尼基塔第一季: http://yunpan.cn/cKMrmeQimQHgR访问密码 b9c8
080 尼基塔第二季: http://yunpan.cn/cKMrHzXx5C67B访问密码 95a8
081 尼基塔第三季: http://yunpan.cn/cKMrFXIZ5Wtsh访问密码 b0b1
082 尼基塔第四季: http://yunpan.cn/cKMrLWgNWTcTC访问密码 17a6
083 疑犯追踪第一季:http://yunpan.cn/cKMxbg5DzKr56访问密码 1350
084 疑犯追踪第二季:http://yunpan.cn/cKMx9WGjcYnAn访问密码 f545
085 疑犯追踪第三季:http://yunpan.cn/cKMxUE76gnhvK访问密码 402f
086 疑犯追踪第四季:http://yunpan.cn/cKMxDIEvQXtpW访问密码 f605
087 屌丝女士:http://yunpan.cn/cKMx33wNnveDw访问密码 ad7a
088 国土安全第一季: http://yunpan.cn/cKMPBymBFApBf访问密码 27be
089 国土安全第二季: http://yunpan.cn/cKMP6V5xIMw6J访问密码 2980
090 国土安全第三季: http://yunpan.cn/cKMP6Ct2fbAeu访问密码 dbb8
091 国土安全第四季: http://yunpan.cn/cKMPM9XbmBiNH访问密码 9a41
092 无耻家庭第一季: http://yunpan.cn/cKkEguhXJATAC访问密码 ec1a
093 无耻家庭第二季: http://yunpan.cn/cKkEsVaNFPwZS访问密码 2cb0
094 无耻家庭第三季: http://yunpan.cn/cKkEVa**fZ64访问密码 e83b
095 无耻家庭第四季: http://yunpan.cn/cKkEjCFHMU7FK访问密码 a2cb
096 无耻家庭第五季: http://yunpan.cn/cKkEw4SsMHubp访问密码 46ca
097 维京传奇第一季: http://yunpan.cn/cKkWsfJnRPSPp访问密码 a103
098 维京传奇第二季: http://yunpan.cn/cKkWfeRxWBdKc访问密码 90aa
099 汉尼拔第一季: http://yunpan.cn/cKkW3vEiwy9kY 访问密码 99fa
100 汉尼拔第二季: http://yunpan.cn/cKkWureyxJpJi 访问密码 3cb4
101 神盾局特工第一季: http://yunpan.cn/cKkWitwcITULR访问密码 e928
102 神盾局特工第二季: http://yunpan.cn/cKkWTeSvee5yX访问密码 6d24
103 时间的针脚: http://yunpan.cn/cKk5HBhGjj55F访问密码 de23
104 闪电侠:http://yunpan.cn/cKk5qBQhmV8d6访问密码 8fec
105 非常人贩第一季: http://yunpan.cn/cKkew7Pu6s2Pp访问密码 4b8b
106 非常人贩第二季: http://yunpan.cn/cKkeQXuhNWuVJ访问密码 a508
107 欢乐合唱团第一季: http://yunpan.cn/cK8JrvxBxA3m9访问密码 04fa
108 欢乐合唱团第二季: http://yunpan.cn/cK8JxrqevnUnp访问密码 14c5
109 欢乐合唱团第三季: http://yunpan.cn/cK8JYyumhiCmt访问密码 0521
110 欢乐合唱团第四季: http://yunpan.cn/cK8JYDmIuZJzM访问密码 7d4b
111 欢乐合唱团第五季: http://yunpan.cn/cK8JqMwRbKBtd访问密码 123d
112 欢乐合唱团第六季: http://yunpan.cn/cK8JPdJyZNACd访问密码 f794
113 黑吃黑第一季: http://yunpan.cn/cK8JWHF4MwdMA访问密码 1a69
114 黑吃黑第二季: http://yunpan.cn/cK8J5m2wLKNIg访问密码 8fc9
115 黑吃黑第三季: http://yunpan.cn/cK8JefErBCVID访问密码 676e
116 特工卡特第一季: http://yunpan.cn/cK8ZRxZFgyWxR访问密码 8535
117 女子监狱第一季: http://yunpan.cn/cK8ZugtKSHrvQ访问密码 0ef6
118 女子监狱第二季: http://yunpan.cn/cK8ZxPU5s9VRj访问密码 7f28
119 纸牌屋第一季: http://yunpan.cn/cK8ZXFgRITBWv访问密码 dda0
120 纸牌屋第二季: http://yunpan.cn/cK8ZGwjcII4s8访问密码 be67
121 纸牌屋第三季: http://yunpan.cn/cK8ZbyLaISEFw访问密码 c7e6
122 马可波罗第一季: http://yunpan.cn/cyACjKVwJqb7z 访问密码 1c43
123 邦德的前世今生 http://yunpan.cn/cKeDXscIiP5wi访问密码 e4e2
124 暴君 http://yunpan.cn/cKeDbSuqBmW84访问密码 44aa
125 超市特工第一季: http://yunpan.cn/cKezUqZRubm8S访问密码 169a
126 超市特工第二季: http://yunpan.cn/cKezihzDSaXXz访问密码 eeb0
127 超市特工第三季: http://yunpan.cn/cKezzxtJTUrIK访问密码 ddc5
128 超市特工第四季: http://yunpan.cn/cKezpRfsMXXzS访问密码 4389
129 超市特工第五季: http://yunpan.cn/cKez4S3rLjxdJ访问密码 c025
130 迷离档案第一季: http://yunpan.cn/cKepdyZs4Dnu7访问密码 1bf3
131 迷离档案第二季: http://yunpan.cn/cKepdaHU44SkN访问密码 c7af
132 迷离档案第三季: http://yunpan.cn/cKepmULafjXBa访问密码 5cb5
133 迷离档案第四季: http://yunpan.cn/cKepH8rVmLjIu访问密码 8c57
134 迷离档案第五季: http://yunpan.cn/cKepFebAp4Ttm访问密码 0c47
135 罪恶黑名单第一季: http://yunpan.cn/cKGHue3EumfiG访问密码 fdee
136 罪恶黑名单第二季: http://yunpan.cn/cKGHxHYCGEYS3访问密码 790e
137 脆莓公园: http://yunpan.cn/cKzAbTxIuPgdg访问密码 6450
138 达芬奇的恶魔第一季: http://yunpan.cn/cKzf6rCAcCxXU访问密码 95b1
139 达芬奇的恶魔第二季: http://yunpan.cn/cKzfMXttcqqNk访问密码 019c
140 打工姐妹花第一季: http://yunpan.cn/cKzfinh5CuTEs访问密码 3fbc
141 打工姐妹花第二季: http://yunpan.cn/cKzfTISZum26L访问密码 6d0f
142 打工姐妹花第三季: http://yunpan.cn/cKzfCLFuJ86pZ访问密码 c8d3
143 打工姐妹花第四季: http://yunpan.cn/cKzfaegaKeh4S访问密码 90f6
144 反击第一季:http://yunpan.cn/cF8bmWgFiS7I2访问密码 639e
145 秘密行动组第一季: http://yunpan.cn/cKC2Akmr5eJcL访问密码 eebe
146 秘密行动组第二季: http://yunpan.cn/cKC2fE5HdsfS6访问密码 dfcc
147 秘密行动组第三季: http://yunpan.cn/cKC2yqtSqBGL4访问密码 3c5d
148 秘密行动组第四季: http://yunpan.cn/cKC2KcXWEX8By访问密码 a607
149 老爸老妈的浪漫史第一季: http://yunpan.cn/cKC8XQCP52KXu访问密码 8e9c
150 老爸老妈的浪漫史第二季: http://yunpan.cn/cKC8GQc9Pg9Zg访问密码 845c
151 老爸老妈的浪漫史第三季: http://yunpan.cn/cKC8bw6KQbEim访问密码 b247
152 老爸老妈的浪漫史第四季: http://yunpan.cn/cKC89y54Q3xV4访问密码 92bd
153 老爸老妈的浪漫史第五季: http://yunpan.cn/cKC89D2S8Wh6v访问密码 efa2
154 老爸老妈的浪漫史第六季: http://yunpan.cn/cKC8UEEWUCQS5访问密码 214a
155 老爸老妈的浪漫史第七季: http://yunpan.cn/cKC8Dq5DaXft2访问密码 8462
156 老爸老妈的浪漫史第八季: http://yunpan.cn/cKC8zLDvaHzhj访问密码 a945
157 老爸老妈的浪漫史第九季: http://yunpan.cn/cKC8psGjrtDfG访问密码 793e
158 反击第二季: http://yunpan.cn/cF8bP4VNTih5T访问密码 eb1c
159 迷失第一季: http://yunpan.cn/cKCEMafcaGHH9访问密码 4783
160 迷失第二季: http://yunpan.cn/cKCEkC3v9pGQS访问密码 e76a
161 迷失第三季: http://yunpan.cn/cKCEv9rGC88Px访问密码 26a9
162 迷失第四季: http://yunpan.cn/cKCE2BFuuiVUy访问密码 31bb
163 迷失第五季: http://yunpan.cn/cKCE8xSKu2Lzk访问密码 5730
164 迷失第六季: http://yunpan.cn/cKCEEwBHvyxuu访问密码 0195
165 绝命律师第一季: http://yunpan.cn/cKCNcPpRhDvVY访问密码 160a
166 反击第三季: http://yunpan.cn/cF8bt9AynaqN2访问密码 7201
167 反击第四季: http://yunpan.cn/cF8bXRdgNJdDx访问密码 db86
168 监狱风云第一季: http://yunpan.cn/cJ2d3ERkARfzK访问密码 9658
169 监狱风云第二季: http://yunpan.cn/cJ2quFsUarYqr访问密码 dc98
170 监狱风云第三季: http://yunpan.cn/cJ2qqqum9I7a3访问密码 1c4f
171 监狱风云第四季: http://yunpan.cn/cJ2qP9fN97peK访问密码 6861
172 监狱风云第五季: http://yunpan.cn/cJ2qST2xwZtUv访问密码 800a
173 监狱风云第六季: http://yunpan.cn/cJ2qBwwPrIcX6访问密码 b519
174 废柴联盟第一季: http://yunpan.cn/cJpEjyi4dMYFw访问密码 b0e3
175 废柴联盟第二季: http://yunpan.cn/cJpEwuMiqBGTm访问密码 5094
176 废柴联盟第三季: http://yunpan.cn/cJpEQ3DdQ6Dfy访问密码 1021
177 废柴联盟第四季: http://yunpan.cn/cJpEcqwZDSVgP访问密码 6043
178 废柴联盟第五季: http://yunpan.cn/cJpEdYSR8HY2k访问密码 dd15
179 9号秘事第一季: http://yunpan.cn/cVKeNdXJeGbNV访问密码 6b8d
180 9号秘事第二季: http://yunpan.cn/cVKeTLrrAJ9mj访问密码 1e47
181 超市特工 第一季http://yunpan.cn/cKezUqZRubm8S
182 废柴联盟: 第六季:http://yunpan.cn/cQejZ2VKMENQ4 访问密码 6c18
183 冰与火之歌:权力的游戏 第五季:http://yunpan.cn/cwwWL7RAGpjIi 访问密码 8575
184 八卦天后 第一季:http://yunpan.cn/cZ86tBRkEjnFE 访问密码 85ac
185 八卦天后 第二季:http://yunpan.cn/cVcugw4LCyvWu访问密码 53c0
186 八卦天后 第三季:http://yunpan.cn/cVtz8uqhSdzFI访问密码 be16
187 八卦天后 第四季:http://yunpan.cn/cjLYqPdEfItgI访问密码 584b
188 夜魔侠 1:http://yunpan.cn/cwQEMxjD66w6c 访问密码 33c8
189 谍影迷情 第一季:http://yunpan.cn/cZ9fQ9GKPjvRk 访问密码 c9f1
190 谍影迷情 第二季:http://yunpan.cn/cZT8N9CYsFvTP访问密码 e702
191 谍影迷情 第三季:http://yunpan.cn/cVDUApgd5Verx访问密码 0254
192谍影迷情 第四季:http://yunpan.cn/cjLuEUghhIdz7访问密码 9afb
193 谍影迷情 第五季:http://yunpan.cn/cwgTmT9HAirpH访问密码 1692
194 同妻俱乐部: 第一季:http://yunpan.cn/cQejsz9HuIbvE 访问密码 8817
195 低俗怪谈: 第一季:http://yunpan.cn/cQejyU2mbui9a 访问密码 08d5
196 千古掘密: 第一季:http://yunpan.cn/cQeVCV9uUjr52 访问密码 3e95
197 狩猎季节 第一季:http://yunpan.cn/cjD7xufDshjbR访问密码 1c4d
198 怪松镇: 第一季:http://yunpan.cn/cQeVivqe8n8wF 访问密码 5fdf
199 古传奇: 第一季:http://yunpan.cn/cQeV4tGmgAL78 访问密码 0e84
200 英伦魔法师: 第一季:http://yunpan.cn/cQeVzmEXqb3eu 访问密码 0b83
201 跟踪者: 第一季:http://yunpan.cn/cQeVtzsCf9aLP 访问密码 6b17
202 狩猎季节: 第二季:http://yunpan.cn/cQeVECyQXVA5r 访问密码 e786
203八卦天后 第五季:http://yunpan.cn/cwVjeIrtpJQTb访问密码 8a8a
204 不懂约会 第一季:http://yunpan.cn/cwwBIfdSrKf33访问密码 edde
205 八卦天后: 第六季:http://yunpan.cn/cwcIwe6UeRaFx访问密码 9695
206 六尺之下: 第一季:http://yunpan.cn/cwHmZkfPSs3Ec 访问密码 2545
207 福尔摩斯:演绎法: 第一季:http://yunpan.cn/cwL5YPDeKfqRI访问密码 b587
208 六尺之下: 第二季:http://yunpan.cn/cwrgyqCgbnPM6访问密码 2a16
209 孤岛求生: 第一季:http://yunpan.cn/cQewy3dUHvXiv访问密码 fb46
210 大西洋底下来的人:http://yunpan.cn/cwqU5V8hA3Nu8访问密码 8815
211 六尺之下 第三季:http://yunpan.cn/cwrmkDWzKnCKA访问密码 cc2e
212 电脑狂人 第一季:http://yunpan.cn/cwMvkZ3hVmRh3访问密码 847b
213 电脑狂人 第二季:http://yunpan.cn/cciX3AXyxjgJt访问密码 19b0
214 六尺之下 第四季:http://yunpan.cn/cwrmWFY8ydkNA访问密码 3173
215 反击 第五季:http://yunpan.cn/cF8GaFg25LM2C 访问密码 2d1a
216 超感猎杀 第一季:http://yunpan.cn/cciXhcT55e8Tf访问密码 ad55
217 六尺之下 第五季:http://yunpan.cn/cwYSYEGjnrVLR访问密码 a737
218 断头谷 第一季:http://yunpan.cn/cwUPgMqsaFNIy访问密码 0be3
219 福尔摩斯:演绎法 第二季:http://yunpan.cn/cwzHHbd7gfUM4访问密码 9c42
220 福尔摩斯:演绎法 第三季:http://yunpan.cn/cw4tIBRMRtFy3访问密码 3c88
221 都市侠盗 第一季:http://yunpan.cn/cKRXLD5JGmpmC访问密码 7208
222 都市侠盗 第二季:http://yunpan.cn/cKRXuUjUL8Ziw访问密码 690a
223 都市侠盗 第四季:http://yunpan.cn/cKRXxe8IKhV8B访问密码 3375
224 女子监狱 第三季:http://yunpan.cn/ccib85H7xutUN访问密码 3256
225 天机密语 第一季:http://yunpan.cn/ccibhvNGTsCuu 访问密码 6538
226 黑暗物质 第一季:http://yunpan.cn/cQK7QtxPL6dNH访问密码 d21b
227 都市侠盗 第五季:http://yunpan.cn/cKRXYxMR67Tdf访问密码 68f5
228 暴君 2:http://yunpan.cn/cciUYZsZxuuhG 访问密码 ef8b
229 汉尼拔:http://yunpan.cn/cciUtRg4Ih87q访问密码 c994
230 春心荡漾 第一季:http://yunpan.cn/cciUiv4IWi7Hz访问密码 1ad4
231 春心荡漾 第二季:http://yunpan.cn/cciDyMebY7WMn 访问密码 ef89
234 春心荡漾 第三季:http://yunpan.cn/cciDYQYKiP6N2访问密码 70d9
235 24小时:再活一天 第九季:http://yunpan.cn/cQYtMkjnaSzQm访问密码 176c
236 24小时 第八季:http://yunpan.cn/cQSfnVKEw7CSi访问密码 3f90
237 24小时 第七季:http://yunpan.cn/cQBSbQeuIrapw访问密码 12fd
238 24小时 第六季:http://yunpan.cn/cQMz7qcwsmL3U访问密码 6b80
239 黑客军团 第一季:http://yunpan.cn/ccizH5c6ZGwbe访问密码 80a2
240 白教堂血案 第一季:http://yunpan.cn/cQE9NzTARAHmN访问密码 58f7
241 白教堂血案 第二季:http://yunpan.cn/cQegNtZcgbBWC访问密码 d1dd
242 白教堂血案 第三季:http://yunpan.cn/cQUqYfiwpSbZ5访问密码 694b
243 白教堂血案 第四季:http://yunpan.cn/cQUqP6gGqvTij访问密码 71a7
244 机器人大战 第一季:http://yunpan.cn/cHmm9vFBriHMz 访问密码 b474
245 惊声尖叫 第一季:http://yunpan.cn/cHFeDEUGePr9e 访问密码 7194
246 真探 第一季:http://yunpan.cn/cQz65ZgdfTBia访问密码 09cf
247 真探 第二季:http://yunpan.cn/cHFe6FMtvNpeG 访问密码 671f
248 白宫风云 第一季:http://yunpan.cn/cQUqkUKgu5dzb访问密码 7a9f
249 白宫风云 第二季:http://yunpan.cn/cQUqvZvLkDs6K访问密码 a149
250 百年乡情 第一季:http://yunpan.cn/cQ4hhCL56v6fH访问密码 632f
251 百年乡情 第二季:http://yunpan.cn/cQ4CR2xMzN8NS访问密码 ec30
252 白宫风云 第三季:http://yunpan.cn/cQUqvYish6MFc访问密码 04b4
253 白宫风云 第四季:http://yunpan.cn/cQUqv4Rih4DZt访问密码 ac6a
254 白宫风云 第五季:http://yunpan.cn/cQUq2QhcVQxxb访问密码 ce4d
255 边桥谜案 第一季:http://yunpan.cn/cQ7JFKngkBZi8访问密码 8654
256 创:崛起:http://yunpan.cn/ccZxxhNuSWXxI 访问密码 ce51
257 边桥谜案 第二季:http://yunpan.cn/ccZxGCEeMaTAS访问密码 0c78
258 变性双面杀手 第一季:http://yunpan.cn/ccZx2WEz6KGMn访问密码 6e97
259 辩护律师 第一季:http://yunpan.cn/ccZxkxGPMTkwy访问密码 3d8b
260 别对我撒谎 第一季:http://yunpan.cn/ccgwHBHFJvtmL访问密码 96f7
261 超人前传 第一季:http://yunpan.cn/ccZxwxgJqQ34g访问密码 4df2
262 别对我撒谎 第二季:http://yunpan.cn/ccgwHpG8LMeuh访问密码 5a7c
263 超人前传 第二季:http://yunpan.cn/ccZx3k6ByUe4K访问密码 b7ea
264 别对我撒谎 第三季:http://yunpan.cn/ccgwFQwNMP53j访问密码 f1f0
265 超人前传 第三季:http://yunpan.cn/ccZx3D4QBYb4r访问密码 dcdc
266 超人前传 第四季:http://yunpan.cn/ccZxuywTNgp4W访问密码 3743
267 波吉亚家族 第一季:http://yunpan.cn/ccZxNcc8aYbvV访问密码 baae
268 超人前传 第五季:http://yunpan.cn/ccZxuPedyrPKn访问密码 0b4e
269 波吉亚家族 第二季:http://yunpan.cn/ccZxN2tij5hgr访问密码 dd5f
270 波吉亚家族 第三季:http://yunpan.cn/ccZxN4sW2HsgW访问密码 a1ac
271 超人前传 第六季:http://yunpan.cn/ccZxun7CRNJ3K访问密码 cecd
272 超人前传 第七季:http://yunpan.cn/ccZxuautI6Q3r访问密码 52ab
273 查莉成长日记 第一季:http://yunpan.cn/ccdPn3fA3KEyh访问密码 7122
274 超人前传 第八季:http://yunpan.cn/ccZxrdnqHgNk9访问密码 d2ad
275 新神探联盟:http://yunpan.cn/cj9UqyqB8YL9I访问密码 52fe
276 查莉成长日记 第三季:http://yunpan.cn/ccdPnhIfi8HYa访问密码 75c8
277 超人前传 第九季:http://yunpan.cn/ccZxrMAZezUJb访问密码 86b2
278 超人前传 第十季:http://yunpan.cn/ccZxrUxIfGfB8访问密码 f313
279 查莉成长日记 第四季:http://yunpan.cn/ccdPXcQDLQrqd访问密码 0b5c
280 唇唇欲动 第一季:http://yunpan.cn/ccBTbYcqDwYT3访问密码 1e24
281 单身毒妈 第一季:http://yunpan.cn/ccZxqeyHWxhVd访问密码 00df
282 单身毒妈 第二季:http://yunpan.cn/ccZxPgk2zS3sG访问密码 2fdb
283 唇唇欲动 第二季:http://yunpan.cn/ccBTbTiI83wZ7访问密码 66ea
284 单身毒妈 第三季:http://yunpan.cn/ccZxPHNLcfqs7访问密码 950c
285 德古拉 第一季:http://yunpan.cn/ccENHRY4IDh7q访问密码 cc84
286 单身毒妈 第四季:http://yunpan.cn/ccZxPvdsEt6Am访问密码 6469
287 妙女神探 第一季:http://yunpan.cn/cceFpdyH66knT访问密码 87ac
288 妙女神探 第二季:http://yunpan.cn/cceFTuef7Gz32访问密码 481c
289 单身毒妈 第五季:http://yunpan.cn/ccZxPz29g92az访问密码 4699
290 单身毒妈 第六季:http://yunpan.cn/ccZxSyTBqFHQc访问密码 7732
291 妙女神探 第三季:http://yunpan.cn/cceFTXJxwnDPQ访问密码 e335
292 妙女神探 第四季:http://yunpan.cn/cceFTaRK8qFc3访问密码 1dbd
293 单身毒妈 第七季:http://yunpan.cn/ccZxSrHQDirQB访问密码 a6f7
294 妙女神探 第五季:http://yunpan.cn/cceFhVnmwBtv6访问密码 a7b8
295 单身毒妈 第八季:http://yunpan.cn/ccZxSWEhQEp7E访问密码 94f3
296 妙女神探 第六季:http://yunpan.cn/cceFC99EvdQXB访问密码 cf52
297 搏击王国 第一季:http://yunpan.cn/ccIcD4mFbIrQQ访问密码 cfa8
298 地狱之轮 第一季:http://yunpan.cn/ccnbMdEqCBeI3访问密码 1a9f
299
第一季:http://yunpan.cn/cciEJzemLaYhz访问密码 ca5e
300 地狱之轮 第二季:http://yunpan.cn/ccnbMEfGVG43k访问密码 75da
301 东区女巫 第一季:http://yunpan.cn/ccnUqpwteQVw3访问密码 2d2c
302狱之轮 第三季:http://yunpan.cn/ccnbMIqSvkGiM 访问密码 4201
303 东区女巫 第二季:http://yunpan.cn/ccCQQmVt3ZzFk 访问密码 5ad6
304 地狱之轮 第四季:http://yunpan.cn/ccnbkZ9jCuWB6访问密码 93cf
305 恩赐之地 第一季:http://yunpan.cn/ccnD2jj8F48gD访问密码 6b5d
306 地狱之轮 第五季:http://yunpan.cn/ccnbvbpkuZvFh访问密码 9612
307 恩赐之地 第二季:http://yunpan.cn/ccnD2PMLnRtsf访问密码 60eb
308 恩赐之地 第三季:http://yunpan.cn/ccnD2nIAKy9s3访问密码 344f
309 不懂约会 2:http://yunpan.cn/cdJk69zMDIxA8访问密码 54b5
310 超级保姆:http://yunpan.cn/cdJ8B2yQm4WXb访问密码 ec77
311 美国故事:http://yunpan.cn/cdJ8AMNeMAA3U访问密码 61f5
312 犯罪现场调查 第十季:http://yunpan.cn/cdJnWJYRLiSUh访问密码 544a
313 复生 第一季:http://yunpan.cn/cdjJc2ky3czYK访问密码 9da8
314 复生 第二季:http://yunpan.cn/cdjJcT7xMh7UE访问密码 d21d
315 犯罪现场调查 第十一季:http://yunpan.cn/cdJnWR49MV5mV访问密码 4978
316 犯罪现场调查 第十二季:http://yunpan.cn/cdJnWbQBi9Gmq访问密码 ccfc
317 犯罪心理 第四季:http://yunpan.cn/cdJbXvwb4Ah5t访问密码 f9dc
318 犯罪现场调查 第十三季:http://yunpan.cn/cdJ5SgEmnZTJs访问密码 4faf
319 犯罪心理 第五季:http://yunpan.cn/cdJbXzkBmAWDx访问密码 2a2f
320 犯罪心理 第六季:http://yunpan.cn/cdJbGyNQ5RTcT访问密码 0703
321 犯罪现场调查 第十四季:http://yunpan.cn/cdJ5SRwZtG7eE访问密码 84c9
322 犯罪现场调查 第十五季:http://yunpan.cn/cdJ5BmB5eDJxh访问密码 c27a
323 犯罪心理 第七季:http://yunpan.cn/cdJbGrchARExW访问密码 1729
324 犯罪心理 第八季:http://yunpan.cn/cdJbGkRy5T8Id访问密码 5cbe
325 海军罪案调查处 第一季:http://yunpan.cn/cdSE96j4ZwrL9访问密码 46c9
326 鬼语者 第一季:http://yunpan.cn/cd6gFb5j9nMau访问密码 37d1
327 愤怒的小鸟 第一季:http://yunpan.cn/cdjsehDrxuitC访问密码 9bd5
328 犯罪心理 第九季:http://yunpan.cn/cdJbGDDzAzNdy访问密码 d579
329 费雪小姐探案集 第一季:http://yunpan.cn/cceHCPAT2zsXC访问密码 8574
330 鬼语者 第二季:http://yunpan.cn/cd6gFTI3rtMMe访问密码 02df
331 费雪小姐探案集 第二季:http://yunpan.cn/cceFndzfRyYuT访问密码 adf6
332 犯罪心理 第十季:http://yunpan.cn/cdJbbyVkSu2SB访问密码 ac4e
333 海军罪案调查处 第二季:http://yunpan.cn/cdSE99M2MN4KN访问密码 3d13
334 港湾 第一季:http://yunpan.cn/cdwA2Va4u7Lmp访问密码 d752
335 鬼语者 第三季:http://yunpan.cn/cd6gLQcA9FEMT访问密码 e3bb
336 海军罪案调查处 第三季:http://yunpan.cn/cdSEzSapRzMTu访问密码 80b0
337 愤怒管理 第一季:http://yunpan.cn/cdjsecIb7Auum访问密码 6256
338 港湾 第二季:http://yunpan.cn/cdwA2P32bnDAC访问密码 9578
339 鬼语者 第四季:http://yunpan.cn/cd6gLRvUVXNCR访问密码 3819
340 愤怒管理 第二季:http://yunpan.cn/cdjse6cBxbpZx访问密码 b265
341.海军罪案调查处 第四季:http://yunpan.cn/cdSEpWBL4GjzW访问密码 04a4
342 鬼语者 第五季:http://yunpan.cn/cd6gLGi6vVwYg访问密码 aba3
343 港湾 第三季:http://yunpan.cn/cdwA2ntLV6tWh访问密码 b3cf
344 海军罪案调查处 第五季:http://yunpan.cn/cdSEpNpAmumzN访问密码 a6fd
345 功夫熊猫 第一季:http://yunpan.cn/cdQ6xxPqyeZ8i访问密码 a64c
346 我们的孩子足够坚强吗?:http://yunpan.cn/cdiixcUvi6wHN访问密码 e5a3
347 港湾 第四季:http://yunpan.cn/cdwA8drbh5S4E访问密码 8989
348 功夫熊猫 第二季:http://yunpan.cn/cdQ6x5UZBRsjN访问密码 3adc
349 海军罪案调查处 第六季:http://yunpan.cn/cdSE4yfw4qejf访问密码 72d5
350 港湾 第五季:http://yunpan.cn/cdwA86XBujVyg访问密码 1fbe
351 鬼楼契约 第一季:http://yunpan.cn/cd7eRFQQD7Tap访问密码 3a8b
352 海军罪案调查处 第七季:http://yunpan.cn/cdSE4uYTdph8E访问密码 d1a5
353 戈登·拉姆齐终极烹饪:http://yunpan.cn/cdwAWJUpXeIMI访问密码 8124
354 格林 第一季:http://yunpan.cn/cdjr7HR7nWM9T访问密码 bced
355 哥谭 第一季:http://yunpan.cn/cdj3Mv8GzjTEm访问密码 f2fc
356 硅谷 第一季:http://yunpan.cn/cdwQGRr9UsE7m访问密码 0f42
357 盲点 第一季:http://yunpan.cn/cmJDHQRsaibyQ访问密码 7dc2
358 格林 第二季:http://yunpan.cn/cdjr7GAInZQk5访问密码 1bb0
359 海军罪案调查处 第八季:http://yunpan.cn/cdSE4Eb55vPxG访问密码 ef45
360 硅谷 第二季:http://yunpan.cn/cdwQGGX6jbKUx访问密码 b54b
361 一级谋杀 第一季:http://yunpan.cn/cdJ2WTv3MN89W访问密码 dc75
362 格林 第三季:http://yunpan.cn/cdwACdrYI3XQK访问密码 68eb
363 海军罪案调查处 第九季:http://yunpan.cn/cdSE4UaDdkqhA访问密码 03a4
364 一级谋杀 第二季:http://yunpan.cn/cdJ25FgWG32Dv访问密码 cf6a
365 毒枭 第一季:http://yunpan.cn/cmFrKKfQjUUJ7访问密码 8a97
366 格林 第四季:http://yunpan.cn/cdwAC8zXfYKy8访问密码 3b49
367 海军罪案调查处 第十季:http://yunpan.cn/cdSEpHsge4864访问密码 b892
368 怪诞小镇 第一季:http://yunpan.cn/cmJiiJdKX9GQF访问密码 1bbf
369 豪斯医生 第一季:http://yunpan.cn/cmxdhA6i3mi6r访问密码 775d
370 太平洋战争:http://yunpan.cn/cmxudBHKrC9Dh 访问密码 de9d
371 兄弟连:http://yunpan.cn/cmxuskT2sqPg2 访问密码 a1eb
372 豪斯医生 第二季:http://yunpan.cn/cmxLmcti3IE9E 访问密码 ae78
373 海军罪案调查处 第十一季:http://yunpan.cn/cdSEz7tFHAnTI访问密码 555a
374 怪诞小镇 第二季:http://yunpan.cn/cmJiiRnYiT6I5访问密码 a588
375 绝望的主妇 第一季:http://yunpan.cn/cm6uJ7HQiKxIC访问密码 9b1b
376 海军罪案调查处 第十二季:http://yunpan.cn/cdSEzG3vIdzuN访问密码 690f
377 豪斯医生 第三季:http://yunpan.cn/cmxLm8VQksYPC访问密码 5195
378 绝望的主妇 第二季:http://yunpan.cn/cm8sTcQ8RAMSf访问密码 65ac
379 黑帆 第一季:http://yunpan.cn/cmJhUj42iLjQi访问密码 5389
380 豪斯医生 第四季:http://yunpan.cn/cmxLm4BTT5BSc访问密码 768a
381 黑色孤儿 第一季:http://yunpan.cn/cmZgruFt2tSaL访问密码 5c3c
382 黑帆 第二季:http://yunpan.cn/cmJhUSQLFTmcj访问密码 0aee
383 火线警探 第一季:http://yunpan.cn/cmZyzYIXPPFEs访问密码 7503
384 绝望的主妇 第三季:http://yunpan.cn/cm8ARW2aUxGIj访问密码 a1e8
385 豪斯医生 第五季:http://yunpan.cn/cmxLHJpe3m2SB访问密码 b1e9
386 火线警探 第二季:http://yunpan.cn/cmZyztcPpEU3S访问密码 e2cd
387 黑色孤儿 第二季:http://yunpan.cn/cmZgrE5Yaxh9P访问密码 0271
388 豪斯医生 第六季:http://yunpan.cn/cmxLHYwxXIeSb访问密码 fbb9
389 绝望的主妇 第四季:http://yunpan.cn/cm8FN4B7VB8Rp访问密码 6224
390 火线警探 第三季:http://yunpan.cn/cmZyztcPpEU3S访问密码 e2cd
391 杰茜驾到 第一季:http://yunpan.cn/cmprbpCXs7gIn访问密码 00a2
392 豪斯医生 第七季:http://yunpan.cn/cmxLH2qk3AS2U访问密码 0afb
393 绝望的主妇 第五季:http://yunpan.cn/cm8FwQd3gjCDN访问密码 d5ca
394 火线警探 第四季:http://yunpan.cn/cmZypLsRPBAUT访问密码 6a36
395 杰茜驾到 第二季:http://yunpan.cn/cmprIb4g6dg2c访问密码 3009
396 绝望的主妇 第六季:http://yunpan.cn/cm8FVLzdcJVBj访问密码 44c7
397 豪斯医生 第八季:http://yunpan.cn/cmxLHp9mGAZGB访问密码 e05e
398 杰茜驾到 第三季:http://yunpan.cn/cmprNJLLne7EV访问密码 ffda
399 火线警探 第五季:http://yunpan.cn/cmZyp2xwpKZDw访问密码 f295
400 绝望的主妇 第七季:http://yunpan.cn/cm8FVLzdcJVBj访问密码 44c7
401 惊魂序曲 第一季:http://yunpan.cn/cmjqdmghepmSF访问密码 8dec
402 火线警探 第六季:http://yunpan.cn/cmZyppXTcDW8L访问密码 3ac1
403 杰茜驾到 第四季:http://yunpan.cn/cmprNR9ENk2iT访问密码 7cc2
404 绝望的主妇 第八季:http://yunpan.cn/cm8FQgH6QIziq访问密码 b69f
405 惊魂序曲 第二季:http://yunpan.cn/cmjqcNv5R8f7y访问密码 5f31
406 呼救 第一季:http://yunpan.cn/cHjSYRSqvBTpu访问密码 49b8
407 混乱特工 第一季:http://yunpan.cn/cmZgDR8DqALs5访问密码 702d
408 假面骑士龙骑:http://yunpan.cn/cmjFNZvJKtN8t访问密码 564a
409 惊魂序曲 第三季:http://yunpan.cn/cmjqcX3BIcBF3访问密码 a989
410 黑镜 第一季:http://yunpan.cn/cmJhhUQVPFWxU访问密码 a348
411 火枪手:http://yunpan.cn/cmZygH2h2nQaW访问密码 672f
412 火星生活 第一季:http://yunpan.cn/cmZKWuh3GTa6A访问密码 51c5
413 极品老妈 第一季:http://yunpan.cn/cmZJKSUJVMGYb访问密码 17b7
414 黑镜 第二季:http://yunpan.cn/cmJhCcUsPRKeM访问密码 2614
415 火枪手 第二季:http://yunpan.cn/cmZygSzKjCYNM访问密码 d2e5
416 火星生活 第二季:http://yunpan.cn/cmZKWXYWhrCMa访问密码 421c
417 极品老妈 第二季:http://yunpan.cn/cmZJKiu7VLEkA访问密码 60e9
418 家有喜旺 第一季:http://yunpan.cn/cmjmAV3BPdITu 访问密码 391c
419 卡通乱炖 第一季:http://yunpan.cn/cHq4NKIVKtDSR访问密码 6bcb
420 机器之心 第一季:http://yunpan.cn/cmZKzYZJyzjdC访问密码 fbab
421 降世神通 第一季:http://yunpan.cn/cHRjP4iLkgTt9访问密码 36be
422 家有喜旺 第二季:http://yunpan.cn/cmjmAV3BPdITu 访问密码 391c
423 卡通乱炖 第二季:http://yunpan.cn/cHqaCdANe8pxi 访问密码 9a89
424 降世神通 第二季:http://yunpan.cn/cHkh26h3vXtvg访问密码 10cf
425 家的港灣 第一季:http://yunpan.cn/cmZ3rRLyw4aCV访问密码 8519
426 情事 第一季: http://yunpan.cn/cKCEX5UXyXykY访问密码 bc5b
427 升天号: http://yunpan.cn/cJVwCSX2nkgIr访问密码 91a7
428 穿靴子的猫历险记: http://yunpan.cn/cJcaf2bamC3gC访问密码 d899

Sql Server 统计每天量

一、通过天数叠加进行统计

使用 CONVERT(,,)方法将日期精确到日期,然后用DATEADD(,,)方法进行天数叠加

发此方法是用最简单的SQL语句进行统计,分别统计出1天内、2天内、3天内的总的数据记录,然后通过for循环进行减运算,最后得出每天的数据量。此种方法最大的弊端就是时间复杂度太高,而需要遍历n多次数据库才能的得到最终结果。

 public List&lt;int&gt; GetCommitTotal_Personally_ByDay(string username, int queryDays)
    {
        List&lt;int&gt; list = new List&lt;int&gt;();
        SqlConnection conn = connectLocaldb.ConnectDataBase();
        //打开数据库
        conn.Open();
        //创建查询语句
        SqlCommand querySingleInfo = conn.CreateCommand();

        for (int i = 0; i &lt; queryDays; i++)
        {
            querySingleInfo.CommandText = "SELECT COUNT(*) as times FROM MemberCommitBeforeCompiling where UserName=" + "'" + username + "'AND DATEADD(d,-" + i + ", CONVERT(varchar(12), getdate(), 111)) &lt;= CONVERT(varchar(12), CommitTime, 111) ";

            using (SqlDataReader reader = querySingleInfo.ExecuteReader())
            {
                // Loop over the results 
                while (reader.Read())
                {
                    memberCommit.times = reader["times"].ToString().Trim();
                    num[i] = int.Parse(memberCommit.times);
                }
            }
        }
        list.Add(num[0]);
        if (queryDays &gt; 1)
        {
            for (int i = 1; i &lt; queryDays; i++)
            {
                list.Add(num[i] - num[i - 1]);
            }
        }
        list.Reverse();
        //关闭数据库连接
        conn.Close();
        return list;
    }`</pre>
**二、格式化数据类型,直接查询**。

**使用 CONVERT(,,)方法直接格式化精确到日期**

相比于第一种,在时间上得到了很大的优化,只需一次查询就可以得到准确数据。弊端是,如果数据库中没有该日期的数据计划,则不返回数据,所以每一次操作都需要对所得数据进行一次遍历。相对于时间上的优化,这个弊端可以忽略不计。
<pre>`  public Dictionary&lt;int,int&gt; GetCommitByDays(string username,int querydays)
    {
        //以当前日作第一天,0代表今天
        querydays--;
        Dictionary&lt;int, int&gt; commitNumber = new Dictionary&lt;int, int&gt;();
        //连接本地数据库
        SqlConnection conn = connectLocaldb.ConnectDataBase();
        //打开数据库
        conn.Open();
        //创建查询语句
        SqlCommand querySingleInfo = conn.CreateCommand();
        querySingleInfo.CommandText = "SELECT CONVERT(varchar(12), CommitTime, 112) as queryKey, COUNT(CONVERT(varchar(12), CommitTime, 112)) as queryValue FROM MemberCommitBeforeCompiling  where UserName=" + "'" + username + "' and DATEADD(d,-"+querydays+", CONVERT(varchar(12), getdate(), 112)) &lt;= CONVERT(varchar(12), CommitTime, 112)  group by CONVERT(varchar(12), CommitTime, 112) order by CONVERT(varchar(12), CommitTime, 112)desc";
        SqlDataReader singleInfoReader = querySingleInfo.ExecuteReader();
        //有多行数据,用while循环
        while (singleInfoReader.Read())
        {
            int key =int.Parse( singleInfoReader["queryKey"].ToString().Trim());
            int value= int.Parse(singleInfoReader["queryValue"].ToString().Trim());
            commitNumber.Add(key, value);
        }
        //关闭查询
        singleInfoReader.Close();
        //关闭数据库连接
        conn.Close();
        return commitNumber;
    }

 

Gitlab WebHook API

webhook的作用:当gitlab server上有任何动作触发时,server端会自动返回一段json数据,记录该动作的所有信息。通过搭建自己写的API来解析json数据,来监控团队内的所有代码及其相关信息动态(提交、编译、issue、评论等)。

获取json数据方法 http://www.ihongguang.cn/?p=99

PushEvents

 public int PushEventInfo([FromBody]PushEvent push)
    {
        ProjectController project = new ProjectController();
        List&lt;string&gt; projectName = new List&lt;string&gt;();
        try
        {
            SqlConnection conn = connectLocaldb.ConnectDataBase();
            conn.Open();
            string sql = "INSERT INTO MemberCommitBeforeCompiling(Username,ProjectName,Version,GroupName,CommitTime,Branch) VALUES ('" + push.user_name + "','" + push.project.name + "','" + push.after + "','" + groupname + "',getdate(),'" + push.@ref + "') ";
            SqlCommand cmd = new SqlCommand(sql, conn);
            int result = cmd.ExecuteNonQuery();
            //判断项目是否已存在
            IList&lt;Project&gt; namelist = project.GetAllProjectInfo();
            foreach(var i in namelist)
            {
                projectName.Add(i.projectName);
            }
            if (!projectName.Contains(push.project.name))
            {
                sql = "INSERT INTO MemberProject(ProjectName,CommitTime,isdelete) VALUES ('" + push.project.name + "',getdate(),'0') ";
                cmd = new SqlCommand(sql, conn);
                result = cmd.ExecuteNonQuery();
            }
            else
            {
                SqlCommand querySingleInfo = conn.CreateCommand();
                querySingleInfo.CommandText = "SELECT projectMembers FROM MemberProject where projectName=" + "'" + push.project.name + "'";
                SqlDataReader singleInfoReader = querySingleInfo.ExecuteReader();
                //有多行数据,用while循环
                while (singleInfoReader.Read())
                {
                   username = singleInfoReader["projectMembers"].ToString().Trim();
                }
                if(!username.Contains(push.user_name))
                {
                    sql = "update MemberProject set ProjectMembers=" + "ProjectMembers+'," + push.user_name + "'";
                    cmd = new SqlCommand(sql, conn);
                    result = cmd.ExecuteNonQuery();
                }
                //关闭查询
                singleInfoReader.Close();
            }
            conn.Close();
            return result;
        }
        catch (Exception e)
        {
            FileStream fs = new FileStream("c:\\log.txt", FileMode.Append, FileAccess.Write);
            StreamWriter sw = new StreamWriter(fs); // 创建写入流
            sw.WriteLine(e.ToString()); // 写入
            sw.Close();
            return 0;
        }

    }`</pre>
**BuildEvents**
<pre>`    public int BuildEventInfo([FromBody]BuildEvent build)
    {
        if (build.build_status == "running" || build.build_status == "pending") { return 0; }
        else
        {
            try
            {
                SqlConnection conn = connectLocaldb.ConnectDataBase();
                //打开数据库
                conn.Open();
                bool buildResult = (build.build_status == "success" ? true : false);
                string sql = "insert into MemberCommit(UserName,ProjectName,SpendTime,BeginTime,EndTime,Version,Result,CommitTime,Branch) Values('" + build.user.name + "','" + build.project_name + "','" + build.build_duration + "',DATEADD(hh,8,'" + (build.build_started_at).Substring(0, build.build_started_at.Length - 3) + "'),DATEADD(hh,8,'" + (build.build_finished_at).Substring(0, build.build_finished_at.Length - 3) + "'),'" + build.before_sha + "','" + buildResult + "',getdate(),'" + build.@ref + "')";
                SqlCommand cmd = new SqlCommand(sql, conn);
                int result = cmd.ExecuteNonQuery();
                conn.Close();
                return result;
            }
            catch (Exception e)
            {
                FileStream fs1 = new FileStream("c:\\test\\log.txt", FileMode.Append, FileAccess.Write);
                StreamWriter sw1 = new StreamWriter(fs1); // 创建写入流
                string s = (build.user.name);
                sw1.WriteLine(e.ToString()); // 写入
                sw1.Close();
                return 0;
            }
        }
    }`</pre>
**IssueEvents**
<pre>`  string sql; int result;
    public int IssueEventInfo([FromBody]IssueEvent issue)
    {
        try
        {
            SqlConnection conn = connectLocaldb.ConnectDataBase();
            conn.Open();
            sql = "insert into MemberIssue(assignee,projectname,starttime,updatetime,initiator,state,issue) Values('" + issue.assignee.name + "','" + issue.project.name + "',DATEADD(hh,8,'" + (issue.object_attributes.created_at).Substring(0, (issue.object_attributes.created_at).Length - 3) + "'),DATEADD(hh,8,'" + (issue.object_attributes.updated_at).Substring(0, (issue.object_attributes.updated_at).Length - 3) + "'),'" + issue.user.name + "','" + issue.object_attributes.state + "'," + issue.object_attributes.iid + ")";
            SqlCommand cmd = new SqlCommand(sql, conn);
            int result = cmd.ExecuteNonQuery();
            conn.Close();
        }
        catch (Exception e)
        {
            FileStream fs = new FileStream("c:\\text\\log.txt", FileMode.Append, FileAccess.Write);
            StreamWriter sw = new StreamWriter(fs); // 创建写入流
            sw.WriteLine(e.ToString()); // 写入
            //sw.WriteLine("++"); // 写入
            //sw.WriteLine(issue.before); // 写入
            //sw.WriteLine("++"); // 写入
            sw.Close();
            result = 0;
        }
        return result;
    } 

 

.NET SQLserver插入数据

用C#语言向数据库中插数据并不是像Java一样需要占位符,而是严格按照Sql语句进行转化,并插入变量。详细解析请看这里 http://www.ihongguang.cn/?p=33

不说废话,直接看代码,以下为WebApi实例代码

     public bool PostRegister([FromBody]Member member)
     {
         member.sex = (member.sex == "male" ? "true" : "false");
         if (member.rank == "Root")
             rankNumber = 1;
         else
             if (member.rank == "Monitor")
                 rankNumber = 2;
             else
         rankNumber = 3;
         try
         {
             SqlConnection conn = connectLocaldb.ConnectDataBase();
             conn.Open();
             string sql = "INSERT INTO Member(username,password,sex,rank) VALUES ('" + member.username + "','" + member.username + "'+'_123','" + member.sex + "',"+ rankNumber + ")";
             SqlCommand cmd = new SqlCommand(sql, conn);
             int result = cmd.ExecuteNonQuery();
             conn.Close();
             flag = true;
         }
         catch(SqlException e)
         {
             flag = false;
         }
         return flag;
     } 

.NET ExecuteNonQuery()

在正常项目中,注册用户之前需要检查用户名是否已经被占用。由于仅知道ExecuteNonQuery()方法返回被影响的行号,便开始屁颠屁颠的写代码

//连接本地数据库
SqlConnection conn = connectLocaldb.ConnectDataBase();
//打开数据库
conn.Open();
//创建查询语句
SqlCommand querySingleInfo = conn.CreateCommand();
querySingleInfo.CommandText = "SELECT * FROM Member where UserName=" + "'" + username + "'";
int result = querySingleInfo.ExecuteNonQuery();
if(result&gt;0)
{
    /*存在*/
}
else
{
    /*不存在*/
}
//关闭查询
singleInfoReader.Close();
//关闭数据库连接

结果在检测代码的时候发现返回值总是-1,所以任意一个检测样例均显示未被占用。那么问题就来了,ExecuteNonQuery()的返回值是什么?

此时只能看官方文档

Remarks

You can use the ExecuteNonQuery to perform catalog operations (for example, querying the structure of a database or creating database objects such as tables), or to change the data in a database without using a DataSet.aspx) by executing UPDATE, INSERT, or DELETE statements.

Although the ExecuteNonQuery returns no rows, any output parameters or return values mapped to parameters are populated with data.

For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command. When a trigger exists on a table being inserted or updated, the return value includes the number of rows affected by both the insert or update operation and the number of rows affected by the trigger or triggers. For all other types of statements, the return value is -1. If a rollback occurs, the return value is also -1.

可以使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句,在不使用 DataSet 的情况下更改数据库中的数据。
进行填充。对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1
看完后才明白,原来select语句不适合ExecuteNonQuery()方法,原来是这样,真笨,方法用错了!特意把它记录下来,希望朋友不要犯类似的错误!

 

 

看完这些后会发现,在官方文档中,并没有提及关于Select的任何操作,所以C# ExecuteNonQuery()并不支持Select操作,所以返回值均是-1.

我们可以使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句,在不使用 DataSet 的情况下更改数据库中的数据。

虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。

对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于其他所有类型的语句,返回值为 -1。

 

web api入门及部分问题(搭建)

整个暑假一直在做一个数据统计类型的网站,我负责写基于Web Api框架的后台代码。

ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的 HTTP 服务。 ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台。

直接进入正题:

S1. 首先创建一个asp.net web应用程序(我本机用的是vs 2015)

QQ截图20160416155825

根据自己的需要选择路径,点击确定

S2. 接下来选择空模板,核心引用选择Web API,点击确定,一个空模板就建成了

QQ截图20160416160009

到这一步,代码框架基本上已经搭建好,下面是一些简单应用。

QQ截图20160416160125

可以看到上图,默认的目录结构跟MVC差不多,只是少了View,因为View在这里是没又什么作用的。空模板建成,之后就需要添加我们需要的代码了。

主要的代码需要再Models以及Controllers中添加!Modles主要定义数据,Controllers则是方法的集合。另外除此之外,还有需要注意的地方就是App_Start文件夹下有一个名字叫做WebApiConfig.cs的文件,里面有一个系统已经默认的路由设置,我们可以直接用这个路由设置,也可以自己写路由,具体会在后面的地方说到!

》》创建实体类

在Models文件夹下添加类,名称为LogInfo.cs,前面提到过,Models是定义数据的,所以添加代码如下:(当然,数据的定义也可以不在Models下,可以直接写在Controllers方法中,但是这样写的话最直观的会增加代码量,降低效率,另外也不方便重用,直接单独在Models中定义数据,可以减少很多不必要的麻烦)(可不加)

1
2
3
4
5
6
7
8

public class LogInfo
{
public string CILogId { get; set; }
public string ProjectName { get; set; }
public string CommitVersion { get; set; }
public string Submitter { get; set; }}




》》创建Controller方法控制器


然后右键Controllers文件夹,添加LogInfoControllers.cs,当然也可以不用名字相对应,但是当controller文件以及models数据文件多的时候,名字操作相对应显得尤为重要,好的代码习惯可以节省很多时间。

QQ截图20160416162423

QQ截图20160416162640

选择web Api 控制器-空(否则整个代码框架会发生很大变化),点击确定,更改名字为LogInfoControllers.cs,添加代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

List&lt;LogInfo&gt; LogInfos = new List&lt;LogInfo&gt;();

public LogInfoController()
{

LogInfos.Add(new LogInfo {
CILogId =“00001”,
ProjectName=“Demo”,
CommitVersion = “1234”,
Submitter = “xiaoming”

});
}

//获取所有数据接口
public List&lt;LogInfo&gt; GetAllLogInfo()
{
return LogInfos;
}

//end






注意在粘贴List<LogInfo> LogInfos = new List<LogInfo>()后,会看到报错,是因为没有进行引用,直接添加对数据文件的引用就行。

》》Router配置

在项目的app_start有一个WebApiConfig.cs文件,里面定义了默认路由,代码是这样的

1
2
3
4
5

config.Routes.MapHttpRoute(
name: “DefaultApi”,
routeTemplate: “api/{controller}/{action}/{id}”,
defaults: new { id = RouteParameter.Optional }
);





代码中的api就是地址中的api,{controller}对应的是Controllers文件夹下面的文件去掉controller后缀的名字,比如之前定义了一个LogInfoController.cs,那么去掉后缀就是LogInfo,刚好就是地址中的LogInfo,至于{id}是函数的参数,由于本函数并没有参数,那么就不用写。如果带参数,则用英文问号(“?”)连接{action}和{id},多个参数则用逻辑与(&)符号来连接{id}

http://localhost:53035/api/group/GetGroupMembersName?groupname=fgig

LogInfoController()是构造函数,主要给数据进行初始化,当然在平时项目中不可能像这样直接进行赋值,很多情况下需要连接数据库进行数据的检索获取,然后再进行赋值操作,这里为了简便,我就直接对其进行赋值!

而在GetAllLogInfo()中直接返回LogInfos信息,当远程访问的时候执行这个函数,就可以获得相应的数据!

其他文件不用更改,这样一个最简单的web api就实现了,只要部署一下就可以直接从远端获取数据了。当然,除了获取数据之外,还有从远端post,delete等一些基本的操作,这里就只列出一个get方法。

》》实现webapi访问

下面就是部署,直接可以远程访问数据。对于web api来说,他的部署有两种承载的方式,一个是自身承载,一个就是用iis部署,在vs中有自带的承载器,我们这里主要介绍windows系统的iis承载方法。

在用iis承载之前,要首先确定你的电脑iis是否已经开启!

(win7为例)

可以 依次点击 开始>控制面板>程序

13

找到“程序和功能”,点击打开或关闭Windows功能

2

进入到“打开或关闭Windows功能”页面后,找到”Internet信息服务“一栏,点击”Internet信息服务“前面的”+“将其自目录全部展开,分别将FTP、服务器、web管理工具、万维网服务目录下的所有选项进行勾选,最后点击”确定“即可。

742

QQ截63

这样 iis功能就已经开启了!

然后在开始>程序搜索框里输入“iis”,找到iis应用软件,并打开,下面就可以进行部署web api了。

QQ截图20160416170318

右击网站>添加网站

123

网站名字自己按照需要取,应用程序池选择默认就行,物理路径则是刚刚建立项目的物理地址(需要注意的是,物理地址的下一层是有bin文件的那一层,如下图,否则无法识别)

70936

ip地址分配本机的ip地址,端口选择一个没有正在使用的端口,比如11112,点击确定。

这样就已经部署好了一个web api ,但是现在你还缺少一个访问权限,这时候就需要你手动添加允许权限,最简单的解决方法就是:右击之前建立的项目>属性>安全>编辑>添加,在输入对象名称来选择框中输入“everyone”,

QQ截图20160416172525

点击检查名称>确认

QQ截图20160416172721

将修改,完全控制勾上

大功告成!

换台电脑,直接输入地址 http://ip地址:端口号/api/LogInfo

就可以直接看到在代码中的数据

QQ截图20160416172909

最后解释一下地址:ip地址:端口号就是在添加网站的时候自己添加上的

http://www.cuichongyang.cn/index.php/2016/04/16/web-api/

 

错误分析:

1.您被禁止访问互联网

我第一次搭建的时候,换了无数个端口,总是提示 您被禁止访问互联网,经过排查,端口也没有被占用,防火墙也已经关闭(只有80端口可以访问),查了好长时间也没有解决这个问题。

思来想去,组可能是安全软件禁止出80以外的端口访问网络。经排查发现是“净网大师”导致,后来联系客服人员反映情况,才知道Version>3.5的软件为了加大广告拦截效果关闭了电脑部分权限。

解决方法:关闭安全类软件、关闭防火墙

2.“/”应用程序错误

行 1:  <%@ Application Codebehind=”Global.asax.cs” Inherits=”LuckyGitlabStatWebAPI.WebApiApplication” Language=”C#” %>

解决方法:重新生成解决方案

 

React Select&Dialog

所用组件均来自material ui 所用实例代码为自己封装的一个新组件

首先安装meterial ui 组件 https://github.com/callemall/material-ui实现Dialog弹窗

其次安装select组件: https://github.com/JedWatson/react-select 实现select

dialog源代码及效果:https://github.com/JedWatson/react-select

select源代码及效果:https://github.com/JedWatson/react-select#async-options-with-promises https://jedwatson.github.io/react-select/

 

以下为封装代码

效果:点击BUTTON按钮后,会弹出一个Dialog,Dialog中是muilt Select选择框`</pre>
</div>
&nbsp;

[Select-Dialog](http://115.159.42.92/wp-content/uploads/2016/08/Select-Dialog.txt)

[![Dialog](http://www.ihongguang.cn/wp-content/uploads/2016/08/Dialog-300x196.png)](http://www.ihongguang.cn/wp-content/uploads/2016/08/Dialog.png)

css代码:[Select-Dialog](http://www.ihongguang.cn/wp-content/uploads/2016/08/Select-Dialog.txt)
<div>
<pre>`    import React from 'react';
    import Dialog from 'material-ui/lib/Dialog';
    import RaisedButton from 'material-ui/lib/raised-button';
    import Select from 'react-select';

    /*select选项*/
    const FLAVOURS = [
    { label: 'banana', value: 'banana' },
    { label: 'apple', value: 'apple' },
    { label: 'paire', value: 'paire' },
    { label: 'ori', value: 'ori' },
    { label: 'red', value: 'red' },
    { label: 'yellow', value: 'yellow' },
    { label: 'blue', value: 'blue' },
    { label: 'pink', value: 'pink' },
    { label: 'banana', value: 'banana' },
    { label: 'apple', value: 'apple' },
    { label: 'paire', value: 'paire' },
    { label: 'ori', value: 'ori' },
    { label: 'red', value: 'red' },
    { label: 'yellow', value: 'yellow' },
    { label: 'blue', value: 'blue' },
    { label: 'pink', value: 'pink' },
];
export default React.createClass({
        propTypes: {
            label: React.PropTypes.string,
        },
        getInitialState: function () {
            return {
                options: FLAVOURS, projectMembers: [],
                projectMonitor:[],
                newProject: false,
            };
        },
        handleOpenForProject :function (){
            this.setState({newProject:true});
        },
        handleClose :function (){
            /*if判断*/
            if(this.state.newProject==true)
            {
                this.setState({newProject:false});
                this.setState({projectMonitor:null});
                this.setState({projectMembers:null});
            }
        },
    handleSelectProjectMember :function(projectMembers) {
        this.setState({ projectMembers });
    },
    handleSelectProjectMonitor :function(projectMonitor) {
    this.setState({ projectMonitor });
},
    render() {
         const actions =
         [
             &lt;RaisedButton label="Cancel" primary={true} onClick={this.handleClose} /&gt;,
             &lt;RaisedButton label="Submit" primary={true} onTouchTap={this.handleClose} /&gt;,
         ];
        return (
         &lt;div &gt;{/*点击此按钮*/}
             &lt;RaisedButton label="New Project"primary={true}  onClick={this.handleOpenForProject} /&gt;
             BUTTON
             &lt;Dialog
             actions={actions}
             modal={false}
             open={this.state.newProject}
             onRequestClose={this.handleClose} &gt;
             &lt;div id="Dialog_Title"&gt;
                 &lt;h2 id="title"&gt;Add a new project&lt;/h2&gt;&lt;br/&gt;
             &lt;/div&gt;

                 &lt;div id="textField"&gt;
                     &lt;div className="section"&gt;
                         &lt;Select multi simpleValue value={this.state.projectMonitor}  options={this.state.options}  placeholder="Select Monitor"  onChange={this.handleSelectProjectMonitor} /&gt;
                     &lt;/div&gt;
                     &lt;div className="section"&gt;
                       &lt;Select multi simpleValue value={this.state.projectMembers} options={this.state.options} placeholder="Select Members"  onChange={this.handleSelectProjectMember} /&gt;
                     &lt;/div&gt;
             &lt;/div&gt;
         &lt;/Dialog&gt;
         &lt;/div&gt;
     );
}
})


 

|