C#学习纪要(8):7月17日
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日相关推荐
- Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月17日-9月23日)
Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月17日-9月23日) 本周Silverlight学习资源更新 Silverlight动画设计中对平移动画的一点体会 ...
- 分享Silverlight/Windows8/WPF/WP7/HTML5周学习导读(6月11日-6月17日)
分享Silverlight/Windows8/WPF/WP7/HTML5周学习导读(6月11日-6月17日) 本周Silverlight学习资源更新 Silverlight 自定义tooltip _e ...
- python周志_Python学习日志9月17日 一周总结
周一,9月11日 这天写的是过去一周的周总结,我从中找出当天的内容. 这天早晨给电脑折腾装机,早晨基本上没有学习,休息了一个早晨. 下午写的上周总结,完事做mooc爬虫课的作业,<Think P ...
- 智源论坛报名 | 智能信息检索与挖掘报告会(9月17日)
活动详情 "智能信息检索与挖掘"重大研究方向,是智源研究院继"人工智能数理基础"和"机器学习"后发布的第三个科研方向,旨在于智能信息检索与挖 ...
- 五大因素推动中国AI崛起,生态报告概览中国AI产业 By 机器之心2017年7月17日 12:51 中国的人工智能将会在全世界扮演什么样的角色?最近,风险投资机构Vertex发表了一份生态研究报告
五大因素推动中国AI崛起,生态报告概览中国AI产业 By 机器之心2017年7月17日 12:51 中国的人工智能将会在全世界扮演什么样的角色?最近,风险投资机构Vertex发表了一份生态研究报告,从 ...
- 以人为本的机器学习:谷歌人工智能产品设计概述 By 机器之心2017年7月17日 12:13 取代了手动编程,机器学习(ML)是一种帮助计算机发现数据中的模式和关系的科学。对于创建个人的和动态的经历
以人为本的机器学习:谷歌人工智能产品设计概述 By 机器之心2017年7月17日 12:13 取代了手动编程,机器学习(ML)是一种帮助计算机发现数据中的模式和关系的科学.对于创建个人的和动态的经历来 ...
- 【历史上的今天】8 月 17 日:Oracle 创始人出生;第一个 COBOL 程序成功跑通!...
透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 8 月 17 日,在科技历史上,都有哪些关键事件发生呢? 1944 年 8 月 17 日:Oracle(甲骨文)创始人 ...
- 【历史上的今天】5 月 17 日:面向对象编程之父出生;国内全面接入互联网;惠普收购 Cray
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 5 月 17 日,在 1969 年的今天,国际电信联盟第二十四届行政理事会正式通过决议,决定把国际电 ...
- 互联网晚报 | 7月17日 星期日 | iPhone 14量产在即;首款国产科学计算软件研发成功;上半年广东人均收入2.47万元...
iPhone 14量产在即,富士康已经进入招工"抢人"阶段 7月16日晚间,富士康iDPBG事业群发布消息称,今年高峰期已提前,郑州厂区自7月17日起,每人返费奖励高达1万元.富士 ...
- 【贪玩巴斯】带你一起攻克英语语法长难句—— 第二章——并列句全解 2021年12月17日——2022年2月5日
[贪玩巴斯]带你一起攻克英语语法长难句-- 第二章--并列句全解 2021年12月17日--2022年2月5日 并列句 1.什么是并列句? 2.并列连词以及与其同义的逻辑关系词 1.常见的并列连词 2 ...
最新文章
- Knative 实战:三步走!基于 Knative Serverless 技术实现一个短网址服务
- Git undo 操作
- 十进制小数化为二进制小数的方法是什么_八进制转换成十进制,十进制转换成八进制...
- Linux Shell高级技巧(五)
- 微信小程序自定义组件
- linux内核根据skb获取目的mac地址
- 思科防火墙syslog 配置
- python泰坦尼克号案例分析_利用python对泰坦尼克号数据集进行分析
- Greenplum 6 磁盘配额管理工具“Diskquota”
- 钓鱼比赛(百度笔试)
- 空间域和频域结合的图像增强技术及实现
- 天文观测理论——已知像素大小、焦距,求像素分辨率
- 类C语言--栈与队列习题:回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈)
- 光纤模式分布 matlab,matlab计算单模光纤模式分布(公布源代码及参考文献)
- HC-SR04超声波模块
- 维盟智能路由_维盟智能WIFI路由器怎么设置?
- INS-GPS-LOSSE 数据处理实例
- UDP 不阻塞的原因
- 遍历dataframe每一行的每一个元素
- Physics物理引擎下载