码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2017-05-23 00:22:19      阅读:376      评论:0      收藏:0      [点我收藏+]

标签:exec   exe   insert   cti   参数   str   values   cli   void   

首先,创建一个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 Id=@Id");
            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 Name=@Name,Sex=@Sex,Age=@Age Where Id=@Id);
            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);//删除数据

  

 

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

标签:exec   exe   insert   cti   参数   str   values   cli   void   

原文地址:http://www.cnblogs.com/dzw159/p/6892052.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!