2017/10/29
1.C#基础语法:
矩阵类的实现
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 矩形类的实现
{
class rectangle //声明一个矩形的类
{
double length;
double width;
public void acceptdetails() //接收属性值
{
length = 4.5;
width = 3.5;
}
public double getArea() //计算面积
{
return length * width;
}
public void Display() //显示细节
{
Console.WriteLine("Lenth :{0}",length);
Console.WriteLine("Width : {0}",width );
Console.WriteLine("Area :{0}",getArea());
}
}
class Program
{
static void Main(string[] args)
{
rectangle r = new rectangle(); //实例化一个类
r.acceptdetails();
r.Display();
Console.ReadLine();
}
}
}
a.多敲代码,增加熟练度。
b.重新认识了调试,设置断点,按F10逐过程调试,F11逐句调试。这是一个很重要的学习代码的方法,通过逐过程和逐句能更好更快地去学习代码的详细运行原理,加深自己的理解,自己之前竟然没意识到调试的重要性!以后得多和身边的优秀的同学、同事、上级交流,学习借鉴他人好的方法和心得。
2017/10/30
2.数据类型:
值类型,引用类型。
字符串前面加 @ 可以转义字符当作普通字符对待
装箱:(?不能理解)
int x = 123;
object obj1 = x; //装箱操作
x = x + 100; //改变x的值时,obj1的值并不会随之改变?
Console.WriteLine("x = {0}", x); //x = 223
Console.WriteLine("obj1 = {0}",obj1); // obj1 = 123
3.类型转换:
隐式类型转换
显示类型转换
常用转换:Convert.ToInt32() , Convert.ToString()
4.常量与变量:
Console.WriteLine("Hello\tworld\n one two\nthree"); //转义字符有效
Console.WriteLine(@"Hello\tworld\n one two\nthree"); //转义字符失效
计算圆的面积:
const double pi = 3.14159; //声明一个常量
double r;
Console.WriteLine("输入半径:");
r = Convert.ToDouble(Console.ReadLine());
double area = pi * r * r;
Console.WriteLine("半径是:{0},面积为:{1}",r,area);
Console.ReadLine();
2017/10/31
今日盘点:
学习并完成了webservice的部署和调用,所遇到的问题和解决方案如下,但没有调用自己写的接口。下午开始学习ELinq,但速度缓慢,没有效果。随后给了一个webservice的实例,刚开始不会查看类的具体内容,也没去百度使用方法,消极怠工。经过师傅的指点,自己需要主动探索,不懂就问度娘和身边的人,不要随之任之。
1.问题:
(1)不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny")......
解决方案:
因为IIS 7采用了更安全的web.config管理机制,默认情况下会锁住配置项不允许更改。管理员身份下运行命令行
C:\windows\system32\inetsrv\appcmd unlock config-section:system.webServer/handlers。
其中的handlers是错误信息中红字显示的节点名称。
如果modules也被锁定,可以运行
C:\windows\system32\inetsrv\appcmd unlock config-section:system.webServer/modules
(2)IIS7.0/8.0的错误HTTP Error 500.19 - Internal
Server Error,错误代码为0x80070021
解决方案:
打开和关闭系统功能---》Internet信息服务--》万维网服务---》应用程序开发功能—》勾选asp.net
(3)HTTP错误404.3 - Not Found由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加MIME映射。
解决方案:
管理员权限打开cmd,输入命令: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis–i
2.具体内容:
仔细回想,今天没有学到实际的知识点,光是Elinq的搜索和查找教程,就花了一个多小时,然后看教程操作莫名奇妙卡壳,看到复杂一点的代码格式就懵圈,时间不经意就过去了,结果实际上啥都没学到!下午开始做用webservice连接数据库、查询并以json格式返回数据结果集的任务,随后指导人给了一个webservice 的实例,自己对里面不清楚的类不会去翻看定义,也没有这个意识,这是个很严重的问题呀,不懂一定要问,不能敷衍。
解决方案:注意积累,学习指导人和身边同事的操作技巧和做事方法;一定要多问;把问题记录到word文档中,看到底是哪些问题耗费了时间,耗费了多少时间。
往日复习:
从键盘输入学生百分制的成绩,换算等级制成绩:A(100-90),B(89-80),C(79-70),D(69-60),E(60以下)。
代码:
Console.WriteLine("请输入学生百分制的成绩");
int grade = Convert.ToInt32(Console.ReadLine()); //成绩输入
switch(grade/10)
{
case 10:
case 9: Console.WriteLine("你的成绩为:A");break;
case 8: Console.WriteLine("你的成绩为:B"); break;
case 7: Console.WriteLine("你的成绩为:C"); break;
case 6: Console.WriteLine("你的成绩为:D"); break;
default: Console.WriteLine("你的成绩为:E"); break;
}
Console.ReadLine();
用while求1到100的和
代码:
int sum = 0;
int i = 1;
while(i <= 100)
{
sum += i;
i++;
}
Console.WriteLine(sum);
Console.ReadLine();
用do...while求1到100的和
代码:
int sum = 0;
int i = 1;
do //至少执行一次
{
sum += i;
i++;
}
while (i <= 100);
Console.WriteLine(sum);
Console.ReadLine();
用for 求1到100的和:
代码:
int sum = 0;
for (int i = 1 ; i < 101; i++) //for循环
{
sum += i;
}
Console.WriteLine(sum);
Console.ReadLine();
2017/11/01
今日盘点:
今天上午学了ELinq的教程,写了一个控制台程序,成功跑通了。中间花了两个小时做了王燕平姐给的小任务。下午查看师傅给的实例,仿照着做,但是结果连最基本的结构都搞错了,太愚蠢了,糟心的学习过程,令人着急的学习效率。
解决方案:每天晚上加班到九点再回去;多和师傅交流,先把问题记下来,整理一下,然后及时问师傅。
具体代码:
var dbConfiguration = DbConfiguration.Configure("Northwind"); //创建DbConfiguration,DbConfiguration在ELinq内是一个单个数据存储的概念,DbConfiguration代表一个数据库。
dbConfiguration.AddClass(); //注册OR映射
dbConfiguration.SetSqlLogger(() => new SqlLog(Console.Out)); //注册控制台日志
using (var ctx = dbConfiguration.CreateDbContext()) //创建IDbContext接口
{ var q = ctx.Set();
//创建IDbset,表示用于执行插入,读取,更新,删除操作的类型化实体集,操作后会立即同步到数据库对应的表中。
var c = new Customer //添加一条记录
{
CustomerID = "XX1",
CompanyName = "Company1",
ContactName = "Contact1",
City = "Seattle",
Country = "USA"
};
// 执行PO插入
q.Insert(c);
//通过主键查询
var c2 = q.FirstOrDefault(p => p.CustomerID == c.CustomerID);
Console.WriteLine(c2.CustomerID);
//基于Linq的局部更新
q.Update(new { CompanyName = "ddd" },p => p.CustomerID == c.CustomerID);
//查询
var c3 = q.FirstOrDefault(p => p.CustomerID == c.CustomerID);
Console.WriteLine(c3.CompanyName);
基于Linq的删除
q.Delete(p => p.CustomerID == c.CustomerID);
var c4 = q.FirstOrDefault(p => p.CustomerID == c.CustomerID);
if (c4 != null)
{
Console.WriteLine("delete failed");
}
}
Console.Read();
备注:后附今日详细时间的记录
·17:35 - 18:07
学习webservice---最基本的结构都弄错了
·16:54 - 17:29
学习webservice----在编写类-SsisDbContext,不行后,就尝试使用Elinq教程给的示例方法查询,但是不知道如何写输入、输出的代码,便接着看师傅给的范例,学习输入的方式,和对应类的编写
·16:15 - 16:49
在webservie中仿照编写连接数据库类:SsisDbContext(问题:1.SsisDbContext:DbContext的时候(“DbContext”不包含采用0个参数的构造函数)2.(sqlLog不包含许多参数的构造函数))
·15:31 - 15:59
仿照示例,添加实体类:casetype,映射到表s_casetype
·14:59 - 15:25
查看实例中的类,headdata,httpresponse,SsisDbContext
·14:20 - 14:48
完成Elinq的示例,在控制台程序上成功连接上数据库,实现增删改查。接着查看师傅给的实例,着手完成布置的任务
·13:47 - 14:15
执行插入,通过主键查询,基于Linq的局部更新,基于Linq的删除,调试数据库连接
·11:56 - 12:24
创建DbConfiguration,注册OR映射,注册控制台日志,创建IDbContext,创建IDbSet,添加一条记录
·11:13 - 11:40
学习-Elinq-修改字符串连接信息-建customer实体类-映射Customers表
·10:41 - 11:08
提交了社管对接文档(15min),继续学ELINQ(10)
·10:10 - 10:35
用excel做社管事件对接,代码号对应识别匹配
·09:00 - 10:10
看了二十分钟的ELinq教程,王燕平姐过来使用电脑,设置操作连接了一番,然后安排任务:浠水县的标准和黄冈市的标准对接(用excel)
往日盘点:
输出1-100中含有因子3的数
代码:
for (int i = 1; i <= 100; i++)
{
if (i % 3 != 0)
{
continue;
}
Console.Write(i);
Console.Write("\t");
求1-100中所有的素数
代码:
2017/11/02
今日盘点:
工作进度:
1.内容:
今天上午在解决方案中添加网站,WEB服务,配置webconfig文件,然后添加必要的类(casetype类-用于映射s_casetype表;caseInfo类-用于存放输出的结果;SsisDbContext类-用于连接数据库,读取表格内容;returntype类-借用了现成的,这是用于以json格式返回数据结果集),在web服务sqlquery.asmx中编写主体代码。在本地能够成功实现,但是在用IIS部署的后出现了问题。
2. 心得:
在程序本地成功实现之前,感觉不知所措,感觉模仿起来都很困难,不清楚范例中的哪些代码是必须用上的,哪些复杂的代码用不上,心里没底。想先看懂了,再敲代码,结果半天都没敲出两行代码。结果硬着头皮,先不管懂没懂完,严格仿照着写,适当删除示例冗余部分(这个部分感觉是困难的,不知道能不能删),写着写着,再问问师傅,结果竟然在实现了。虽然写的代码很简单,但让本来很绝望,感觉智商受限的自己有了些许的信心。以后,不管三七二十一,先动手试试看。
3.问题详情:
(1).问题:
命名空间“System”中不存在类型或命名空间名称“Linq”。是否缺少程序集引用?
解决办法:
开始的时候创建项目选择的Framework版本是4.5,将Framework的版本改为了4.0.
(2).问题:
NLite.Data.QueryException:尝试加载Oracle客户端库时引发BadImageFormatException。如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题。---> System.InvalidOperationException:尝试加载Oracle客户端库时引发BadImageFormatException。如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题。---> System.BadImageFormatException:试图加载格式不正确的程序。(异常来自HRESULT:0x8007000B)
解决方案:
在IIS管理器中,1.选择网站对应的应用程序池,右键-高级设置:,2.设置“启用32位应用程序”为true,点击确定:
(3)问题:
测试窗体只能用于来自本地计算机的请求
解决方案:
计划安排:
1.查找IIS部署的问题
2.在部署成功后,请师傅布置下一个任务
3.每天加班到九点再回去,免得回去不想看书从而懈怠。
PS:每日详细时间记录
[if !supportLists]·[endif]17:19 - 17:45
学习webservice--百度解决发布的问题
[if !supportLists]·[endif]16:47 - 17:14
学习webservice--发布出现了问题:尝试加载Oracle客户端库时引发BadImageFormatException。如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题
[if !supportLists]·[endif]16:08 - 16:35
学习webservice--能够返回满足条件的第一个查询的元素,尝试返回满足条件的所有元素
[if !supportLists]·[endif]14:18 - 14:44
学习webservice---复制输出的类-returntype
[if !supportLists]·[endif]13:47 - 14:13
学习webservice----仿写响应体
[if !supportLists]·[endif]11:33 - 12:05
学习webservice--学写用于输入的类,
[if !supportLists]·[endif]10:47 - 11:17
学习webservice---写业务主体,添加一个用于输出存放的类,搁置的问题:1.如何输入typeid;2.继承时有baseservice,我也得添加到自己的网站中么
[if !supportLists]·[endif]10:16 - 10:42
学习webservice---严格按着结构仿照着写
[if !supportLists]·[endif]09:42 - 10:11
学习webservice-1.问题:命名空间“System”中不存在类型或命名空间名称“Linq”。是否缺少程序集引用?解决办法:开始的时候创建项目选择的Framework版本是4.5,将Framework的版本改为了4.0.
[if !supportLists]·[endif]09:10 - 09:42
统计制作智慧城市分组名单,并上报
往日盘点:
编写代码,感受public和private的区别。前者,任何公有成员都能被访问,后者,只有类中的其它成员能访问。而internal,是在该成员所定义的程序中的所有类都能访问
2017.11.03
今日盘点:
工作进度:
1.内容:
(1)、向s_casetype表中插入一条数据A。(2)、通过typeid修改A案件的案件名称。(3)、通过typeid删除案件类型A。(4)、通过pid查询该父类下的所有案件。(5)、设置异常信息抛出,改正正常操作记录的数量输出。初步完成了前四个任务,目前正在做第五个任务。
2.问题:
问题详情:在做任务4---通过pid查询该父类下的所有案件时,抛出的结果界面
System.ArgumentException:类型为“System.Collections.Generic.IEnumerable`1[casetype]”的表达式不能用于方法“System.Linq.IQueryable`1[casetype]
TakeWhile[casetype](System.Linq.IQueryable`1[casetype],
System.Linq.Expressions.Expression`1[System.Func`2[casetype,System.Boolean]])”的类型为“System.Linq.IQueryable`1[casetype]”的参数。
解决方法:
把查询语句:var results = db.CaseInformation.TakeWhile(p => p.pid== pidval);
变为:varquery =
fromcindb.CaseInformation
wherec.pid == pidval
selectc;
具体原因还不清楚。
计划安排:
1.先完善异常信息的抛出,和正常结果集中结果记录数的更正。
2.下周开始做多表联合查询,接着做陈友杰项目的后端查询调用。
PS:附详细时间记录:
[if !supportLists]·[endif]16:12 - 17:55
学习webservice---判断传入的信息不符合格式,返回错误信息,编写对应代码。
[if !supportLists]·[endif]15:23 - 15:55
学习webservice--检查任务成果,存在明显问题:1.在删除,插入,更新一条记录时,count应该等于1。2.由三列做主键约束,在程序中先判断是否满足唯一性,若满足,执行对应操作,若不满足,返回错误提示信息
[if !supportLists]·[endif]14:51 - 15:17
学习webservice--还在看JSON格式返回结果集的类的详细代码
[if !supportLists]·[endif]14:19 - 14:46
学习webservice---学习以JSON格式返回结果集的类,看详细代码
[if !supportLists]·[endif]13:46 - 14:14
学习webservice---完成第四个任务:通过pid查询该父类下的所有案件。方法:用LINQ的查询方法加foreach,实现了查询结果的遍历
[if !supportLists]·[endif]11:54 - 12:20
学习webservice---查看ELinq官方网站,寻求elinq的遍历输出方法
[if !supportLists]·[endif]11:19 - 11:48
学习webservice----做第四个任务:通过pid查询该父类下的所有案件。问题:不知道如何遍历输出
[if !supportLists]·[endif]10:39 - 11:04
学习webservice--第三个任务:通过typeid删除案件类型A
[if !supportLists]·[endif]10:07 - 10:34
学习webservice-写代码做第二个任务:通过typeid修改s_casetype表中对应案件的案件名称
[if !supportLists]·[endif]09:36 - 10:02
学习webservice--完成插入一条数据纪录a
[if !supportLists]·[endif]09:03 - 09:28
学习webservice---做新任务-第一条:向s_casetype表中插入一条数据A
webservice流程总结:
1.添加一个网站
2.添加一个web服务
3.配置web.config文件。
1)数据库连接语句
add providerName="System.Data.OracleClient" name="Northwind" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.160)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl))); User Id=lt_dcms;Password=geodept3;
2)一个远程访问的配置
4.类的添加:
1)casetype类:映射至ORACLE数据库中的s_casetype表格中。
2)CaseInfo类:用于输出的类
3)HeadData类:用于程序运行状态的说明
4)SsisDbContent类:用于连接数据库,和赋予接口(用于执行增删改查,并同步到数据库的对应表中)
5)returntype类:以JSON格式返回数据
5.主体代码的编写:
(1)、向s_casetype表中插入一条数据A。
(2)、通过typeid修改A案件的案件名称。
(3)、通过typeid删除案件类型A。
(4)、通过pid查询该父类下的所有案件。
(5)、设置异常信息抛出,改正正常操作记录的数量输出。初步完成了前四个任务,目前正在做第五个任务。
问题:逻辑漏洞太多,异常信息的识别和抛出存在很大问题。
2017.11.06
今日盘点:
汇报人:刘文袁
工作进度:
1.内容:上午一开始自顾自调试修改错误信息的处理,和修改摸索加了三个限制条件的对应的增删改查的语句,但不得其法,带着几个自认为的问题地去向师傅请教,结果其实所有的用法范例中都有,自己没有去仔细学习和研究,辜负了师傅的良苦用心。后面模仿着范例中的使用,解决了语句的语法问题。但逻辑结构又有很大的问题,对输入信息的判断有些混乱,在请教陈友杰同学后,才恍然明白自己的两层if语句判断内外颠倒了,犯了逻辑上的低级错误。在解决逻辑上的问题后,随后的改动就轻松了很多。下午的时候,基本完成了增删改查的完善工作,但对多条记录的输出格式还得优化。半下午后,开始看多表查询的范例代码,一个一个类的查看。
2.详细问题:
1)如果没输入值,如何判断,错误的用法:使用null来判定传入的参数是否为空if(typeidval ==null)。
解决方案:if(typeidval
==“”),用双引号判断。
2)逻辑问题:
对因果判断颠倒,先进入了子集,再做全集的判断语句,导致逻辑不通。
解决方案:多请教身边的陈友杰同学、同事和师傅,自己平时注意使用if,else语句的逻辑结构判断。今天上午就是由于逻辑错乱,导致无法弹出对应的信息提示。
3)代码注释问题:
在编写代码后未对写注释。
解决方案:边写边注释。
4)范例学习问题:
没有充分利用师傅给的范例,没意识到这个范例的重要性,自己缺乏学习主动性。
解决方案:多研究师傅给的范例,学习其中优秀的写法。
计划安排:
1.明天使用ELinq进行多表联合查询,源表为c_caseinfo,z_casetype,任务是根据TYPEID查看该案件的类型名称。
往日盘点:
递归方法调用:
参数传递:
1)按值传递参数:形参不改变实参,因为它们使用不同内存中的值(因为在调用一个方法时,会为每个值参数创建新的存储位置)更深层次的机制还不懂???
2)按引用传递参数:
引用参数是对变量内存位置的引用,表示与提供方法的实际参数具有具有相同的内存位置。对原理还是有点懵??
2017/11/7
今日盘点:
工作进度:
1.内容:上午开始编写多表联合查询的代码,通过仿照范例的写法。先添加了三个类,casetypemodel类和caseinfomodel类用于映射数据库中的对应表z_casetype和c_caseinfo,casedetail类用输出;接着添加SsisDbContext类中的注册映射关系,其中刚开始把一对多和多对一的关系颠倒了;最后是编写主体代码和调试异常信息的处理。半下午后开始安装学习SVN,然后和陈友杰沟通了解他的项目内容,准备着手写后端的接口。
2.问题:
1)未通过主键查找数据,映射关系颠倒,导致查出多条纪录,从而出错。
解决方案:改变映射关系。
2)在异常信息的逻辑处理上,出现问题,对输入信息的判断不全,不能判断未赋值的情况,未能考虑到输入为非整型的字符串内容的报错处理。
解决方案:在请教陈友杰同学和百度后,解决了逻辑问题。先定义传入的参数为string类型,而不是int类型;然后通过判断字符串能否转为整型为条件,若不能,报错:"查询失败,请输入正确查询信息",若能,进入内层—案件是否存在的判断(若存在,执行查询;若不存在,返回:"案件不存在"及对应提示)。
计划安排:
1.掌握SVN的基本用法
2.和陈友杰沟通,开始写后端的接口。
2017/11/8
今日盘点:
汇报人:刘文袁
工作进度:
1.内容:上午安装调试陈友杰给的项目,运行起来,然后和陈友杰沟通需要写后端代码的内容,第一个接口功能是先查询出所有记录内容,然后以树形结构返回结果集。然后找了一个范例学习,但范例中并没有使用ELinq技术,而是涉及到在PL/SQL中写存储过程,对于使用哪个形式有些疑惑,在请教师傅后,得知使用ELinq技术也可以实现后,便决定先使用学习过的Elinq方式编写。下午就修改数据库连接字符串,添加了对应的类,编写了查询所有记录的代码。
2.问题:查询出的所有结果是list列表,需要转换为树形结构的结果集。
尝试的解决方案:将集合类转换为DataTable后,在转换为树形结构。
计划安排:
[if !supportLists]1.[endif]先解决转换为树形结构的结果集的问题。
[if !supportLists]2.[endif]做增删改查的其它接口。
往日盘点:
字符串的操作
2017/11/09
今日盘点:
汇报人:刘文袁
工作进度:
[if !supportLists]1.[endif]内容:上午进行了一个错误的尝试(想把列表转换为表,然后想办法转为树形结构,在以JSON格式返回结果集),实际上转换成表的操作根本是多余的。原因在于自己没有仔细看示例,没明白只要最终输出的结果是JSON格式即可。另外没有新建自己的解决方案和网站,而是在别人的网站中添加自己的代码,这是不可取的。下午就重新建立了自己的解决方案和代码,然后耗费了大量时间的事情在于如何把用ELINQ查询出来的结果转换为树形结构。先是学习了oracle的存储过程中的树形展示的代码,然后需要做的就是把这个存储过程以elinq的方式写出来。
[if !supportLists]2.[endif]问题:转换为树形结构
可能解决方案(示例):
public IEnumerable GetClassID(int p_id)
{
var query = from c in this.MenuInfo
where c.Parent == (long)p_id
select c;
return query.ToList().Concat(query.ToList().SelectMany(t => GetClassID((int)t.Id)));
}
计划安排:
[if !supportLists]1.[endif]再试试在elinq技术下转换为树形结构。
[if !supportLists]2.[endif]倘若不行,尝试通过存储过程的方式写接口。