一、寫在前面
因為這學期選修的 .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