.NET零基础入门10:打老鼠之数据存储-阿里云开发者社区

开发者社区> 文艺小青年> 正文

.NET零基础入门10:打老鼠之数据存储

简介:
+关注继续查看

一:数据库设计

到此为止,打老鼠游戏还不能保存每次游戏的成绩,我们今天完成的任务就是要存储成绩到SQLSERVER的数据库中。

在上节课中,我们已经知道了如何创建数据库,所有,先创建数据库“MouseGame”,然后,按如下的数据格式建立一个数据表(表名:GameRecord):

wps_clip_image-19041

 

二:数据库读写

数据库的读写部分,请查看下节视频。最终,我们的成绩查看界面如下:

wps_clip_image-19185

 

三:视频

非公开部分,请联系最课程(www.zuikc.com

 

四:将DataRow转换成Model

在上面的视频中,我们的数据库直接以Datatable的形式赋值给了前台(UI)。在实际的应用的当中,尤其是多层架构的应用当中,我们更常用的做法是将数据库记录以List<Model>(还记得List<Model>这个形式吗?我们的前台UI的Code-behind代码中,我们存储老鼠控件,用了List<PictureBox>)的形式在前后台中间进行传递,即:

下面的代码:

public DataTable GetList()

{

    string sql = "select * from GameRecord";

    return this.GetTable(sql);

}

最好变成:

public List<GameRecord> GetRecordList()

{

    return DatatableHelper.ToList<GameRecord>(this.GetList());

}

GameRecord是什么?就是我们的游戏记录的实体类,它的实现如下:

public class GameRecord

{

    #region Public Properties

    public DateTime GameDateTime { get; set; }

    public int GameLevel { get; set; }

    public int Score { get; set; }

    public int Total { get; set; }

    #endregion

}

在上面的代码中,DatatableHelper的实现如下:

namespace GameSqlserverDal

{

    using System;

    using System.Collections.Generic;

    using System.Data;

    using System.Reflection;

    internal class DatatableHelper

    {

        #region Public Methods and Operators

        public static DataTable ToDataTable<T>(IEnumerable<T> list)

        {

            var pList = new List<PropertyInfo>();

            Type type = typeof(T);

            var dt = new DataTable();

            Array.ForEach(

                type.GetProperties(),

                p =>

                    {

                        pList.Add(p);

                        dt.Columns.Add(p.Name, p.PropertyType);

                    });

            foreach (T item in list)

            {

                DataRow row = dt.NewRow();

                pList.ForEach(p => row[p.Name] = p.GetValue(item, null));

                dt.Rows.Add(row);

            }

            return dt;

        }

        public static List<T> ToList<T>(DataTable dt) where T : class, new()

        {

            var prlist = new List<PropertyInfo>();

            Type type = typeof(T);

            Array.ForEach(

                type.GetProperties(),

                p =>

                    {

                        if (dt.Columns.IndexOf(p.Name) != -1)

                        {

                            prlist.Add(p);

                        }

                    });

            var oblist = new List<T>();

            foreach (DataRow row in dt.Rows)

            {

                var ob = new T();

                prlist.ForEach(

                    p =>

                        {

                            if (row[p.Name] != DBNull.Value)

                            {

                                p.SetValue(ob, row[p.Name], null);

                            }

                        });

                oblist.Add(ob);

            }

            return oblist;

        }

        #endregion

    }

}

以我们当前的知识储备能力,我们还不能很好的理解上面这个帮助类的代码,但是没有关系,虽然我们目前写不出这个代码,但是我们一定要会用。就像我们写不出.NET Famework的API,但是我们会用好它,也是一种能力。现在,重构我们的代码,用List<GameRecord>来给我们的UI进行赋值吧。


本文转自最课程陆敏技博客园博客,原文链接:http://www.cnblogs.com/luminji/p/4401797.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MySQL 基础---存储过程和函数操作
存储过程和函数就是实现经过编译并存储在数据库中的一段sql语句集合。函数必须有返回值,而存储过程则没有。存储过程的参数类型远远多于函数参数类型。 存储过程和函数的优点: 存储过程和函数允许标准组件式编程,提高了SQL语句的重用性、共享性和可移植性。
958 0
.NET数据库编程求索之路--6.使用ADO.NET实现(三层架构篇-使用List传递数据-基于存储过程)(2)
6.使用ADO.NET实现(三层架构篇-使用List传递数据-基于存储过程)(2)      【 夏春涛 email: xchuntao@163.com  blog: http://www.cnblogs.
770 0
Python爬虫入门教程 31-100 36氪(36kr)数据抓取 scrapy
1. 36氪(36kr)数据----写在前面 今天抓取一个新闻媒体,36kr的文章内容,也是为后面的数据分析做相应的准备的,预计在12月底,爬虫大概写到50篇案例的时刻,将会迎来一个新的内容,系统的数据分析博文,记得关注哦~ 36kr 让一部分人先看到未来,而你今天要做的事情确实要抓取它的过去。
9318 0
Hadoop大数据挖掘从入门到进阶实战
1.概述   大数据时代,数据的存储与挖掘至关重要。企业在追求高可用性、高扩展性及高容错性的大数据处理平台的同时还希望能够降低成本,而Hadoop为实现这些需求提供了解决方案。面对Hadoop的普及和学习热潮,笔者愿意分享自己多年的开发经验,带领读者比较轻松地掌握Hadoop数据挖掘的相关知识。
1644 0
NetApp发布多款产品 支持存储云计算
本文讲的是NetApp发布多款产品 支持存储云计算,NetApp公司推出了支持云计算架构的产品和服务,用于其企业级客户的数据中心。
1608 0
数据挖掘敲门砖--Python爬虫入门
Python爬虫.jpg WHAT 数据挖掘是一门综合的技术,随着Ai的兴起,在国内的需求日渐增大。 数据挖掘的职业方向通常有三个,顺便概要地提一下所需的技能(不仅于此) 数据分析方向:需要数理知识支撑,比如概率论,统计学等 数据挖掘方向:需要懂得主流算法的原理及应用,数据库的原理和操作 科学研究方向:通常是科学家们在深入研究数据挖掘的相关基础理论和算法 但是看完简介,好像和爬虫没什么关系? 接着往下看。
2189 0
阿里云弹性容器实例产品 ECI ——云原生时代的基础设施
本文介绍了弹性容器实例 ECI 的技术优势,特别介绍了 ECI 在弹性、Serverless、安全和易用性等方面技术上的方案和采取的优化措施。
5615 0
3576
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载