(初级试水)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 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);//删除数据

  

 

转载于:https://www.cnblogs.com/dzw159/p/6892052.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值