在.NET世界,若是想要对数据库进行操做,总少不了ADO.NET的身影。在.NET Core里一样离不开那些熟悉的类库与API。这里简略地介绍下如何经过ADO.NET对SQL Server进行不一样的处理。sql
第一步先在项目工程中查看有无System.Data.SqlClient引用,若是没有的话,能够用如下三种方式安装:数据库
Install-Package System.Data.SqlClient
dotnet add package System.Data.SqlClient
能够使用最基础的ExecuteReader方法:工具
using (var conn = new SqlConnection("Server=.;Integrated Security=true")) { conn.Open(); using (var cmd = new SqlCommand("select top 10 * from [AdventureWorks2016CTP3].[Person].[Person]", conn)) { using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { Console.WriteLine(reader["FirstName"]); } } } }
在.NET Core 2.0之后还能够使用SqlDataAdapter与DataSet,看得出微软在向后兼容方面作了很多工做:命令行
using (var conn = new SqlConnection("Server=.;Integrated Security=true")) { var adapter = new SqlDataAdapter("select top 10 * from [AdventureWorks2016CTP3].[Person].[Person]", conn); var dataset = new DataSet(); adapter.Fill(dataset); var dt = dataset.Tables[0]; foreach (var item in dt.Rows) { var row = item as DataRow; Console.WriteLine(row["FirstName"]); } }
using (var conn = new SqlConnection("Server=.;Integrated Security=true")) { conn.Open(); using (var cmd = new SqlCommand("insert into [AdventureWorks2016CTP3].[Person].[AddressType] (Name) values(@Name)", conn)) { cmd.Parameters.AddWithValue("@Name", "Test"); cmd.ExecuteNonQuery(); } }
using (var conn = new SqlConnection("Server=.;Integrated Security=true")) { conn.Open(); using (var cmd = new SqlCommand("update [AdventureWorks2016CTP3].[Person].[AddressType] set name = @Name where name = @Criterion", conn)) { cmd.Parameters.AddWithValue("@Name", "Test2"); cmd.Parameters.AddWithValue("@Criterion", "Test"); cmd.ExecuteNonQuery(); } }
using (var conn = new SqlConnection("Server=.;Integrated Security=true")) { conn.Open(); using (var cmd = new SqlCommand("delete [AdventureWorks2016CTP3].[Person].[AddressType] where name = @Name", conn)) { cmd.Parameters.AddWithValue("@Name", "Test2"); cmd.ExecuteNonQuery(); } }
using (var conn = new SqlConnection("Server=.;Integrated Security=true")) { conn.Open(); using (var cmd = new SqlCommand("[AdventureWorks2016CTP3].[dbo].[uspGetEmployeeManagers]", conn)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@BusinessEntityID", 10); using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { Console.WriteLine(reader["FirstName"]); } } } }
使用上与普通的数据表没有差异。code
using (var conn = new SqlConnection("Server=.;Integrated Security=true")) { conn.Open(); using (var cmd = new SqlCommand("select top 10 * from [AdventureWorks2016CTP3].[HumanResources].[vEmployee]", conn)) { using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { Console.WriteLine(reader["FirstName"]); } } } }
以上代码例子里的数据库使用的是AdventureWorks Databases and Scripts for SQL Server 2016 CTP3ip