.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
多个ORM比较:https://www.cnblogs.com/sunkaixuan/p/16467703.html