7月17日    星期五       天气晴

实习两个星期了。感觉自己对C#的了解有了一定程度的进步,但是编码还是不够熟练,模块完成的速度不快,看来还是要努力才行。

ps: 我要把握自己的幸福啊。可是现在只能等待天使的calling。等吧等吧。愿意等你一生一世。

今天要做什么呢?

首先,把数据库导出成Access文件那一块完成了。然后去看看上传,下载的那一块怎么弄。再然后去把删除的做完。记得一定是要在本地数据库上面操作才好。如果这些都做完还剩时间,那就自己先测试一下吧,感觉Bug还是挺多的。要抓紧时间总结。

10:27-----遇到问题:在database.Tables.append(table)语句中,返回一个COMException,提示是类型无效。

原因是提供程序可以接受的表中的列仅识别的数据类型。 每个提供程序是不同和特定顺序存储的数据库格式。

常量 值 Jet 3.51 Jet 4.0 SQL 7.0

adBinary 128
adBoolean 11
adChar 129 来
adCurrency 6
adDate 7
adDouble 5
adGUID 72
adInteger 3
adLongVarBinary 205
adLongVarChar 201 已
adLongVarWChar 203
adNumeric 131 是 (使用信息) * 是 (使用信息) *
adSingle 4
adSmallInt 2
adUnsignedTinyInt 17
adVarBinary 204
adVarChar 200
adVarWChar 202
adWChar 130
adDBTimeStamp 135

* 如果您使用 adNumeric 数据类型 Microsoft Jet 4.0 和 Microsoft SQL Server 7.0,必须设置精度。

所以不能使用adVarChar,要使用adVarWChar。恩。改了就对了。

11:34----------看看ADO.NET。看来对C#的了解真的是一张白纸,啥也不知道。不过用了就要知道了。

-----------------------------------------------------------------------------------------------------------------------------------------

ADO.NET 要点记录

* 与ADO的不同之处。

---------ADO 的主要对象是Connection Command RecordSet和Filed. 而ADO.NET新增了DataSet DataTalbe DataView等新类。

ADO.NET 最重要的新特性是这些新类,如DataSet等,是以断开连接的方式工作的,比如DataSet,dataset就彷佛是内存中的数据库,当从远程服务器中把数据下载过来后,连接断开,在本地处理数据,完了后再建立连接。这里摘抄一段:

“ADO2.1引入了断开连接的记录集,允许从数据库中检索数据,把他们传送给客户机,进行处理再重新连接服务器。但他们使用起来常常很繁琐,因为断开连接的工作方式不是一开始就设计好的。ADO.NET则不同,除了一种情况(<provider>DataReader)外,他们都用于脱机处理数据库”

16:36------------上来冒个泡。ADO.NET的内容之后以后再补上了。还是要先完成任务。

-------------刚刚算是学习了一下LINQ的语法,比如Join,不如符合from。发现真的是挺博大精深的。

----------- 还有的就是LINQ的实现原理,这个是目前仍然是一知半解的,知道一点,但是又不完全明白,使用了非常多的泛型,扩展方法,匿名委托,相当灵活。

------------  可惜LINQ的强大语法我都用不上,我要做的是从几个表中将有用的字段的记录都拿出来,然后写入到Access数据库中。

-------------------我的做法是先用from句式读出主表的对象集合。

像这样:

var memberCardTable = from mc in database.mb_MemberCard select mc;

然后在一个foreach里面,读出这些对象中需要用到的字段。

而那些在这些对象中没有的字段,也就是在其他表中的,用这样的方法:

        string level = database.mb_MemberType.First(r=>r.MemberTypeID==memberCard.MemberTypeID).MemberTypeName;
                string memberName = database.mb_Member.First(r => r.MemberID == memberCard.MemberID).MemberName;
                string cellPhone = database.mb_Member.First(r => r.MemberID == memberCard.MemberID).MobileNumber;

                    用的是一个First方法,用来返回第一个符合条件的结果。而条件是使用r表达式写的。

---------------  写入数据库的过程也是很简单啦。跟JDBC差不多的。

----------------  先建立连接。 用OleConnection,写个连接字符串就行。

----------------- 然后建一个OleCommand,用它的ExecuteNoneQuery方法来执行插入的SQL语句。

---------------- - 插入的SQL语句可以用很原始的方法去写,像这样:

string commandString = "INSERT INTO [Member Info] values ("
                                       +"'" + cardID + "',"
                                       +"'" + memberName + "',"
                                       +"'" + level + "',"
                                       +"'" + cellPhone + "')";

        非常需要注意的一点事表名啊,member info,周围一定要加上[ ]!!!这个小BUG就让我爽了好一阵子。还有,原来关键字一定要大写。hollyshit.

Transact-SQL 语法规则:http://www.ebok.cn/NetWork/Servers/Servers-33012.html

17:28 ------------------ 终于完成了会员信息导出成mdb的模块。

最后补充一下SQL语句是怎么写的:

首先定义SQL语句:

string commandString ="INSERT INTO [Member Info] values(@cardID, @memberName, @level, @cellPhone ,@consumptionSum,@score)";

@后面跟一个变量名,这表示的是SQL变量。

然后从command中获取一个参数集合:

OleDbParameterCollection parameters = command.Parameters;

这是一个容器变量,然后往里面添加我们各个字段的名称和类型,注意名称跟SQL语句中的变量名是一致的。

parameters.Add(new OleDbParameter("@cardID", OleDbType.VarWChar));
          parameters.Add(new OleDbParameter("@memberName", OleDbType.VarWChar));
          parameters.Add(new OleDbParameter("@level", OleDbType.VarWChar));
          parameters.Add(new OleDbParameter("@cellPhone", OleDbType.VarWChar));
          parameters.Add(new OleDbParameter("@consumptionSum", OleDbType.Currency));
          parameters.Add(new OleDbParameter("@score", OleDbType.Currency));

这是为了要定义每一个字段的数据类型。

最后一步就是为各个变量添加具体的值:

parameters[0].Value = cardID;
                parameters[1].Value = memberName;
                parameters[2].Value = level;
                parameters[3].Value = cellPhone;
                parameters[4].Value = consumptionSum;
                parameters[5].Value = score;
         当然了这些值都是在上面用LINQ语句获得了的。

最后executeNoneQuery().大功告成!

这个星期又将要结束了。感觉还是挺充实的。下星期继续努力吧。

C#学习纪要(8):7月17日相关推荐

  1. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月17日-9月23日)

    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月17日-9月23日) 本周Silverlight学习资源更新 Silverlight动画设计中对平移动画的一点体会 ...

  2. 分享Silverlight/Windows8/WPF/WP7/HTML5周学习导读(6月11日-6月17日)

    分享Silverlight/Windows8/WPF/WP7/HTML5周学习导读(6月11日-6月17日) 本周Silverlight学习资源更新 Silverlight 自定义tooltip _e ...

  3. python周志_Python学习日志9月17日 一周总结

    周一,9月11日 这天写的是过去一周的周总结,我从中找出当天的内容. 这天早晨给电脑折腾装机,早晨基本上没有学习,休息了一个早晨. 下午写的上周总结,完事做mooc爬虫课的作业,<Think P ...

  4. 智源论坛报名 | 智能信息检索与挖掘报告会(9月17日)

    活动详情 "智能信息检索与挖掘"重大研究方向,是智源研究院继"人工智能数理基础"和"机器学习"后发布的第三个科研方向,旨在于智能信息检索与挖 ...

  5. 五大因素推动中国AI崛起,生态报告概览中国AI产业 By 机器之心2017年7月17日 12:51 中国的人工智能将会在全世界扮演什么样的角色?最近,风险投资机构Vertex发表了一份生态研究报告

    五大因素推动中国AI崛起,生态报告概览中国AI产业 By 机器之心2017年7月17日 12:51 中国的人工智能将会在全世界扮演什么样的角色?最近,风险投资机构Vertex发表了一份生态研究报告,从 ...

  6. 以人为本的机器学习:谷歌人工智能产品设计概述 By 机器之心2017年7月17日 12:13 取代了手动编程,机器学习(ML)是一种帮助计算机发现数据中的模式和关系的科学。对于创建个人的和动态的经历

    以人为本的机器学习:谷歌人工智能产品设计概述 By 机器之心2017年7月17日 12:13 取代了手动编程,机器学习(ML)是一种帮助计算机发现数据中的模式和关系的科学.对于创建个人的和动态的经历来 ...

  7. 【历史上的今天】8 月 17 日:Oracle 创始人出生;第一个 COBOL 程序成功跑通!...

    透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 8 月 17 日,在科技历史上,都有哪些关键事件发生呢? 1944 年 8 月 17 日:Oracle(甲骨文)创始人 ...

  8. 【历史上的今天】5 月 17 日:面向对象编程之父出生;国内全面接入互联网;惠普收购 Cray

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 5 月 17 日,在 1969 年的今天,国际电信联盟第二十四届行政理事会正式通过决议,决定把国际电 ...

  9. 互联网晚报 | 7月17日 星期日 | iPhone 14量产在即;首款国产科学计算软件研发成功;上半年广东人均收入2.47万元...

    iPhone 14量产在即,富士康已经进入招工"抢人"阶段 7月16日晚间,富士康iDPBG事业群发布消息称,今年高峰期已提前,郑州厂区自7月17日起,每人返费奖励高达1万元.富士 ...

  10. 【贪玩巴斯】带你一起攻克英语语法长难句—— 第二章——并列句全解 2021年12月17日——2022年2月5日

    [贪玩巴斯]带你一起攻克英语语法长难句-- 第二章--并列句全解 2021年12月17日--2022年2月5日 并列句 1.什么是并列句? 2.并列连词以及与其同义的逻辑关系词 1.常见的并列连词 2 ...

最新文章

  1. Knative 实战:三步走!基于 Knative Serverless 技术实现一个短网址服务
  2. Git undo 操作
  3. 十进制小数化为二进制小数的方法是什么_八进制转换成十进制,十进制转换成八进制...
  4. Linux Shell高级技巧(五)
  5. 微信小程序自定义组件
  6. linux内核根据skb获取目的mac地址
  7. 思科防火墙syslog 配置
  8. python泰坦尼克号案例分析_利用python对泰坦尼克号数据集进行分析
  9. Greenplum 6 磁盘配额管理工具“Diskquota”
  10. 钓鱼比赛(百度笔试)
  11. 空间域和频域结合的图像增强技术及实现
  12. 天文观测理论——已知像素大小、焦距,求像素分辨率
  13. 类C语言--栈与队列习题:回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈)
  14. 光纤模式分布 matlab,matlab计算单模光纤模式分布(公布源代码及参考文献)
  15. HC-SR04超声波模块
  16. 维盟智能路由_维盟智能WIFI路由器怎么设置?
  17. INS-GPS-LOSSE 数据处理实例
  18. UDP 不阻塞的原因
  19. 遍历dataframe每一行的每一个元素
  20. Physics物理引擎下载

热门文章

  1. ecshop的dwt模板文件
  2. 去掉图标后蓝色方块设置方法
  3. Mysql报错 Error querying database. Cause java.sql.SQLSyntaxErrorException
  4. chrome浏览器调试时阻止图片的加载
  5. 三十岁那年,我的梦想是年薪十万
  6. Lync Server 2013 标准版的DNS和端口要求
  7. ADS1256在实际应用中遇到的问题总结
  8. 关于百度的若干问题和百度员工的回答
  9. Hexo主题-Icarus主题
  10. 【C语言】-- 指针