.NET Core开发日志——ADO.NET与SQL Server
程序员文章站
2023-03-28 09:52:49
在.NET世界,如果想要对数据库进行操作,总少不了ADO.NET的身影。在.NET Core里同样离不开那些熟悉的类库与API。这里简略地介绍下如何通过ADO.NET对SQL Server进行不同的处理。 System.Data.SqlClient 第一步先在项目工程中查看有无System.Data ......
在.net世界,如果想要对数据库进行操作,总少不了ado.net的身影。在.net core里同样离不开那些熟悉的类库与api。这里简略地介绍下如何通过ado.net对sql server进行不同的处理。
system.data.sqlclient
第一步先在项目工程中查看有无system.data.sqlclient引用,如果没有的话,可以用以下三种方式安装:
- visual studio上的可视化nuget包管理工具(manage nuget packages),找到相应类库,点击安装按钮
- 同样是visual studio上的包管理控制台(package manager console) 输入命令,
install-package system.data.sqlclient
- 命令行界面(cli) 中使用命令,
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"]); } } } }
视图
使用上与普通的数据表没有差别。
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 ctp3
上一篇: 我已经理解了并发和并行的区别
下一篇: 09-Mysql数据库----外键的变种
推荐阅读
-
.NET Core开发日志——ADO.NET与SQL Server
-
[Asp.Net Core] Blazor Server Side 开发教程 - 安装环境与运行第一个程序
-
ADO.NET与SQL Server
-
.NET Core开发日志——Linux版本的SQL Server
-
.NET Core开发日志——Dapper与MySQL
-
.NET Core开发日志——Entity Framework与PostgreSQL
-
.NET Core开发日志——视图与页面
-
.NET Core开发日志——ADO.NET与SQL Server
-
[Asp.Net Core] Blazor Server Side 开发教程 - 安装环境与运行第一个程序
-
.NET Core开发日志——Linux版本的SQL Server