(初级试水)MVC 使用 ADO.Net + 泛型 操作数据库

首先,创建一个MVC项目,

然后,创建一个Person类来获取数据库的表Persons的 "单一个体” 数据

    public class Person
    {
        [Key]
        public string Id { get; set; }
        public string Name { get; set; }
        public string Sex { get; set; }
        public int Age { get; set; }
    }

 

再则,创建一个 Interface1接口,为了实现CURD的操作

    public interface Interface1<T> where T:class,new()
    {
        IEnumerable<T> Get();
        void Create(T Item);
        void Update(T Item);
        void Delete(T Item);

    }

 

所以,我们就可以创建一个Northwind类,使用接口   Interface1  来获取  CURD 数据库  的多个 Person  的数据(类使于使用Model的{get;Set;},我们这里只是用到get)

public class Northwind
    {
        private Interface1<Person> _personOperation = null;

        public Interface1<Person> Persons
        {
            get
            {
                if (this._personOperation == null)
                {
                    this._personOperation = new Method();
                }
                return this._personOperation;
            }
        }
    }

当然,有了这个接口的话,我们就可以对数据库有一个直接的统一调用操作(当然,接口必须去实现它),所以   需要去实现它的CURD操作,

然后,创建一个继承这个接口并去实现它的方法类 Method

引用

using System.Data;
using System.Data.SqlClient;
using System.Web.Configuration;

  使用参数化查询

public class Method : Interface1<Person>
    {
        private string _path = Environment.CurrentDirectory;
        private string _connectionString = WebConfigurationManager.ConnectionStrings["CURD"].ToString();//获取我们Web.Config的数据库配置

            //@"Server=.;Initial Catalog=CURD;Integrated Security=true;";也可以 使用这个代替 _connectionString  的值

        public void Create(Person Item)
        {
            IDbConnection connection = new SqlConnection(this._connectionString);
            IDbCommand cmd = new SqlCommand(@"Insert Into Persons(Id,Name,Sex,Age) Values(@Id,@Name,@Sex,@Age)");
            cmd.Connection = connection;

            cmd.Parameters.Add((Item.Id == null)
                ? new SqlParameter("@Id", DBNull.Value)
                : new SqlParameter("@Id", Item.Id));
            cmd.Parameters.Add(new SqlParameter("@Name", Item.Name));
            cmd.Parameters.Add(new SqlParameter("@Sex", Item.Sex));
            cmd.Parameters.Add(new SqlParameter("@Age", Item.Age));

            connection.Open();
            cmd.ExecuteNonQuery();
            connection.Close();
        }

        public void Delete(Person Item)
        {
            IDbConnection connection = new SqlConnection(this._connectionString);
            IDbCommand cmd = new SqlCommand(@"Delete From Persons Where [email protected]");
            cmd.Connection = connection;

            cmd.Parameters.Add((Item.Id == null)
                ? new SqlParameter("@Id", DBNull.Value)
                : new SqlParameter("@Id", Item.Id));
            cmd.Parameters.Add(new SqlParameter("@Name", Item.Name));
            cmd.Parameters.Add(new SqlParameter("@Sex", Item.Sex));
            cmd.Parameters.Add(new SqlParameter("@Age", Item.Age));

            connection.Open();
            cmd.ExecuteNonQuery();
            connection.Close();
        }

        public IEnumerable<Person> Get()
        {
            IDbConnection connection = new SqlConnection(this._connectionString);
            IDbCommand cmd = new SqlCommand("SELECT * FROM Persons");

            cmd.Connection = connection;
            connection.Open();

            IDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection | CommandBehavior.SingleResult);

            while (reader.Read())
            {
                Person person = new Person()
                {
                    Id = reader.GetValue(reader.GetOrdinal("Id")).ToString(),
                    Sex = reader.GetValue(reader.GetOrdinal("Sex")).ToString(),
                    Name = reader.GetValue(reader.GetOrdinal("Name")).ToString(),
                    Age = Convert.ToInt32(reader.GetValue(reader.GetOrdinal("Age")))
                };
                yield return person;
            }

            connection.Close();

        }

        public void Update(Person Item)
        {
            IDbConnection connection = new SqlConnection(this._connectionString);
            IDbCommand cmd = new SqlCommand(@"Update Persons Set [email protected],[email protected],[email protected] Where [email protected]);
            cmd.Connection = connection;

            cmd.Parameters.Add((Item.Id == null)
                ? new SqlParameter("@Id", DBNull.Value)
                : new SqlParameter("@Id", Item.Id));
            cmd.Parameters.Add(new SqlParameter("@Name", Item.Name));
            cmd.Parameters.Add(new SqlParameter("@Sex", Item.Sex));
            cmd.Parameters.Add(new SqlParameter("@Age", Item.Age));

            connection.Open();
            cmd.ExecuteNonQuery();
            connection.Close();
        }
    }

补充:

  Web.Config的数据库配置

  <connectionStrings>
    <add name="CURD" connectionString="Data Source=.; Initial Catalog=CURD;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

  方法使用

Northwind db = new Northwind();
            IEnumerable<Person> pList = db.Persons.Get();//获取Person表的数据
            Person pl = new Person {
                Id="5",
                Name="ddd",
                Age = 28,
                Sex="男"
            };
            db.Persons.Create(pl);//插入数据
        db.Persons.Update(pl);//更新数据
            db.Persons.Delete(pl);//删除数据

  

时间: 2024-10-25 19:22:07

(初级试水)MVC 使用 ADO.Net + 泛型 操作数据库的相关文章

另辟蹊径创良机,全身投入亲试水

在<黑客与画家>第五章中,有“创业教父”之称的Paul Graham讲述了他与他的朋友罗伯特·莫里斯在95年决定创业,最后成功走上“另一条路”——设计出运行在互联网上的软件的经历.文章在对比互联网软件与桌面软件的过程中向我们展示了互联网软件的优势.竞争力及其发展前景,作者认为在未来互联网软件会占据较为主要的位置.其中,我们也能看到创业的艰辛之处以及创业成功的某些重要因素.成功向来不是说一说便能取得的光环,到达彼岸需要我们付出努力去乘坐“实践”小船,创业则更不例外. 在就业难的大趋势下,自主创业

微博试水婚庆市场 用意何在?机会几何?

在整个互联网发展的历程中,始于2010年前后的社会化媒体是一个堪称转折点的阶段,在这个时期涌现的各种社会化平台不仅带来了巨大的产业创新,而且还对传统的社交方式进行了全新的颠覆.除此之外,这波新型的社会化媒体平台还在新闻媒体.O2O.线上电商等领域产生了巨大变革.在中国,微博是这种时代变革的典型平台,基于这种平台产生的各种商业模式和现象,截至今天仍然在各行各业里源源不断地上演. 根据此前微博官方公布的资料来看,企业化用户.微电商.自媒体.城市微博平台等等策略,均是微博在这个过程中所尝试过的不同尝试

第一回:Scrapy的试水

前言:今天算是见到Scrapy的第二天,之前只是偶尔查了查,对于这个框架的各种解释,我-----都-----看------不------懂----,没办法,见面就是刚. 目的:如题,试水 目标:<伯乐在线>python版(不要问我怎么老是惹伯乐,好欺负)的"实践项目"的一页的文章标题和简介,导入Mysql数据库. 配置:win7+python3.4+Scrapy1.4+phpStudy(主要用它的mysql数据库) 完成时间:2017-7-27(历时2天) 作者:羽凡 --

自学it18大数据笔记-第三阶段Spark-day14;Spark-day15(开始试水找工作了)——会持续更新……

写在最前:转行大数据领域,没报班,自学试试,能坚持下来以后就好好做这行,不能就--!准备从现有这套it18掌的视屏残本开始--自学是痛苦的,发博客和大家分享下学习成果--也是监督自己,督促自己坚持学下去. (教学视屏是it18掌做活动送的,视屏不是很全,课堂笔记和源码等课堂相关资料也未放出,但徐培成老师课讲的真心很好,感兴趣的不妨听听,特此感谢it18掌--帮他们打打广告) 笔记为自学时记录,如有错误,欢迎指正,不胜感激!现已广州转移至上海,开始试水找工作了,欢迎小伙伴们加qq或微博沟通交流(Q

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;阿里巴巴携手中国白银集团试水珠宝电商O2O平台

淘宝安全交易平台 www.xunjie36.com 淘宝店铺出售www.360feiyue.com 淘宝店铺交易www.360feiyue.com[关键词]淘宝安全交易平台 www.xunjie36.com 淘宝店铺出售www.360feiyue.com 淘宝店铺交易www.360feiyue.com店铺     一周之内,阿里巴巴.腾讯和京东商城三家线上巨头密集发布o2o战略,被b2c企业挤压了数年之久的实体零售商摇身一变,成为巨头们争夺的优质合作资源.但仅仅拉拢实体零售商已经不足以支持阿里巴

地图类APP试水,欢迎围观

地图类APP试水,欢迎围观 dpsl.png (20.79 KB, 下载次数: 0) 20150703174425.png (316.58 KB, 下载次数: 0) 20150703174414.png (77.89 KB, 下载次数: 0) 20150703174502.png (37.5 KB, 下载次数: 0) 版权声明:本文为博主原创文章,未经博主允许不得转载.

让电影尖叫:京东众筹试水跳板时代

"宝宝"撞上监管墙,收益率跌跌不休之时,互联网金融悄然转战新的战场-"众筹".阿里巴巴.百度以及京东金融相继进军众筹领域,引发业内关注. 京东金融众筹业务"凑份子"上线,在满足广大消费者日益增长的物质文化需求的同时.并推出首批募集的12个项目,包括汪峰"鸟巢"演唱会.<小时代3:刺金时代>.智能机顶盒ZIVOO.智能空气净化器等,主要集中在智能硬件及娱乐文化行业.其中,以<小时代3:刺金时代>最受欢迎,

京东、微软结盟&#160;电商试水人工智能

热热闹闹的双十一结束了,除了阿里再次刷新记录外,电商行业已经没有了往昔的神秘与激情,尤其PC电商已经再无创新空间,从阿里的交易数据中可以发现,移动电商正快速崛起,占到总交易额的42.6%,未来电商技术革新更有可能发生在移动端. 腾讯非常想在移动电商市场挑战阿里,先后投资了美丽说.买卖宝.口袋购物,以及京东等电商企业,同时正在不断尝试基于微信的移动电商发展.现实证明,目前时机仍未成熟,腾讯的举措并没有对阿里的稳定造成直接影响,真正能让阿里颤抖的不是拉拢更多的电商平台与其争夺市场,而是超越常态的技术

微博试水卖车社交电商如何令4S“颤抖”?

微博对社交电商的探索一直在深入,年初,微博上线了"支付"产品,从而使社交产业链实现了闭环,随后,微博又尝试售卖多种商品,不断扩大移动电商的试水范围,最近微博大规模汽车销售收效显著,让自己在电商领域的地位更进了一步. 8月21日,微博欢乐购车季活动上线,本届活动共吸引来自30余个品牌的上百款车型的加入,既有奔驰宝马等豪华品牌,也有奇瑞比亚迪等国产品牌,品牌车型之齐全,堪称基于互联网平台的"车展".对用户而言,可通过电脑.手机.平板等终端登陆活动页面,以秒杀.返现.抽奖