.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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM