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

  • A+
所属分类:.NET技术
摘要

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


 一、写在前面

因为这学期选修的 .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

.NET 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