• .NET ORM 连接数据库及基本增删改查


     一、写在前面

    因为这学期选修的 .net 课程就要上机考试了,所以总结下.net 操作 SqlServer 数据的方法。(因为本人方向是 Java,所以对.net 的了解不多,但以下所写代码均是经过测试成功的)

    二、.net 连接数据库

     在web.config文件中配置数据库连接,代码写在<configuration></configuration>内

      <appSettings>
        <add key="connstring" value="user id=sa; password=sa123456; database=dataset; server=(local)" />
      </appSettings>

    其中 sa  为 SqlServer 数据库账号,sa123456 为数据库账号密码,dataset 位数据库名。

    通过上面的代码大家不难看出这是通过SqlServer数据库的账号连接的。那么如果需要通过Windows身份认证连接呢?

      <appSettings>
        <add key="connstring" value="Data Source=.;Initial Catalog=dataset;Integrated Security=True"/>
      </appSettings>

    其中,dataset 为数据库名。

    配置好了之后,再在cs后台文件中使用 Connection 对象连接

    String constr = ConfigurationManager.AppSettings["connstring"].ToString();         
    SqlConnection myconn = new SqlConnection(constr);

    很明显,第一个句获取我们在 web.config 中配置的数据库的信息的字符串,然后 new 一个 SqlConnection 对象。

    这个时候也许你会想,既然是获取配置文件中的字符串,那么可不可以直接在cs后台文件中写而不需要再配置文件中配置后再获取呢?答案是肯定的。

    String constr = "Data Source=.;Initial Catalog=dataset;Integrated Security=True";
    SqlConnection myconn = new SqlConnection(constr);

    仔细对比下先前写的配置文件,就知道这两种方式的相同点了。

    那么现在简单说下 Connection 对象是个什么。在 ADO.NET 中 Connection 对象的主要用途是打开和关闭数据库的连接,通过这个对象,可以对数据库进行访问和操作。

    String constr = "Data Source=.;Initial Catalog=dataset;Integrated Security=True";
    SqlConnection myconn = new SqlConnection(constr);
    myconn.Open();
    //相关数据库操作
    myconn.Close();

    Open 就是打开数据库,Close 就是关闭数据库。

    三、.NET ORM 操作数据库

    安装 sqlsuagr ORM

     创建数据库对象

     //创建数据库对象 SqlSugarClient   
     SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
     {
                ConnectionString = "Server=.xxxxx",//连接符字串
                DbType = DbType.SqlServer, //数据库类型
                IsAutoCloseConnection = true //不设成true要手动close
     });
    

      

    查所有

    List<Student> list=db.Queryable<Student>().ToList()
    //select * from Student
    

      

     按条件查询

    db.Queryable<Student>().Where(it=>it.Id==1).ToList()
    //select * from Student where id=1
    

      

    多条件查询

    db.Queryable<Student>().Where(it=>it.Id>10&&it.Name=="a").ToList()
    //select * from Student where id>10 and name='a'
    db.Queryable<Student>().Where(it=>it.Id>10).Where(it=>it.Name=="a").ToList()
    //select * from Student where id>10 and name='a'
    //如果是或者关系可以用 ||
    

      

    模糊查询

    db.Queryable<Student>().Where(it =>it.Name.Contains("jack")).ToList();
    //select  * from  Student where name like %jack%
    

      

    动态OR查询

    var exp= Expressionable.Create<Student>();
    exp.OrIF(条件,it=>it.Id==1);//.OrIf 是条件成立才会拼接OR
    exp.Or(it =>it.Name.Contains("jack"));//拼接OR
    var list=db.Queryable<Student>().Where(exp.ToExpression()).ToList();
    

      

    根据主键查询

    susgar中的single等同于EF中的SingleOrDefault

    db.Queryable<Student>().InSingle(2) //通过主键查询 SingleById
    db.Queryable<Student>().Single(it=>it.Id==2) //根据ID查询
    //select * from Student where id=2
    

      

    数据行数查前几条

    db.Queryable<Student>().Take(10).ToList()
    //select top 10 * from Student
    

      

    获取最小值

    db.Queryable<Order>().Min(it=>it.Id);//同步
    db.Queryable<Order>().MinAsync(it=>it.Id);//异步
    //也可以用函数 SqlFunc.AggregateMin
    

      

    求和

    db.Queryable<Order>().Sum(it=>it.Id);//同步
    db.Queryable<Order>().SumAsync(it=>it.Id);//异步
    //也可以用函数 SqlFunc.AggregateSum
    

      

  • 相关阅读:
    清除浮动的原理剖析
    修正IE6不支持position:fixed的bug(转)
    Callbacks vs Events
    垂直属性
    jQuery的事件模型
    Dean-Edward的事件系统实现
    简单的导航栏实现
    弹窗层效果的实现(非jQuery实现)
    rmdir
    mkdir
  • 原文地址:https://www.cnblogs.com/sunkaixuan/p/15521639.html
Copyright © 2020-2023  润新知