.NET Core开发日志——ADO.NET与SQL Server

在.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

原文地址:https://www.cnblogs.com/kenwoo/p/9563015.html

时间: 2024-11-11 20:15:47

.NET Core开发日志——ADO.NET与SQL Server的相关文章

.NET Core开发日志——Linux版本的SQL Server

SQL Server 2017版本已经可以在Linux系统上安装,但我在尝试.NET Core跨平台开发的时候使用的是Mac系统,所以这里记录了在Mac上安装SQL Server的过程. 最新的SQL Server没有专门为Mac系统准备安装包,但由于Mac系统上支持Docker,所以可以用一种变通的方式--在Docker内部安装Linux版本的SQL Server. 系统要求 因为我的Macbook Air型号比较老,硬件条件很一般,所以首先确定下是否满足安装SQL Server的条件.官方给

.NET Core开发日志——Entity Framework与PostgreSQL

Entity Framework在.NET Core中被命名为Entity Framework Core.虽然一般会用于对SQL Server数据库进行数据操作,但其实它还支持其它数据库,这里就以PostgreSQL作为例子. PostgreSQL PostgreSQL可以选用原生系统与Docker两种安装方式. Official Docker Package 在应用程序工程中添加相关的引用. dotnet add package Npgsql.EntityFrameworkCore.Postg

.NET Core开发日志——RequestDelegate

本文主要是对.NET Core开发日志--Middleware的补遗,但是会从看起来平平无奇的RequestDelegate开始叙述,所以以其作为标题,也是合情合理. RequestDelegate是一种委托类型,其全貌为public delegate Task RequestDelegate(HttpContext context),MSDN上对它的解释,"A function that can process an HTTP request."--处理HTTP请求的函数.唯一参数,

使用ADO.NET对SQL Server数据库进行访问

在上一篇博客中我们给大家简单介绍了一下VB.NET语言的一些情况,至于理论知识的学习我们可以利用VB的知识体系为基础,再将面向对象程序设计语言的知识进行融合便可进行编程实战. 如果我们需要访问一个企业关系数据库(比如SQL Server或者Oracle),并且需要包含由复杂关系构成的表中的数据,如何去实现?我们可以利用ADO.NET内置功能提取并操作数据,就想插入.更新和删除SQL Server里的数据一样. 首先简单介绍一下ADO.NET.所谓的ADO就是ActiveXData Objects

ASP.NET Core使用NLog记录日志到Microsoft Sql Server

在之前的文章中介绍了如何在ASP.NET Core使用NLog,本文为您介绍在ASP.NET Core使用NLog记录到Microsoft Sql Server 1.我们需要添加依赖: NLog.Web.AspNetCore System.Data.SqlClient 2.添加nlog.config文件 1 <?xml version="1.0" encoding="utf-8" ?> 2 <nlog xmlns="http://www.

.Net Core开发日志——从搭建开发环境开始

.Net Core自2016年推出1.0版本开始,到目前已是2.1版本,在其roadmap计划里明年更会推出3.0版本,发展不可不谓之迅捷.不少公司在经过一个谨慎的观望期后,也逐步开始将系统升级至最新的.Net Core平台,所以现在开始进行.Net Core开发可谓正当其时. 因为.Net Core支持Windows系统以外的Linux与Mac系统,在选择开发环境时,并不需要局限在原有的Windows平台,这里我选用了Mac平台. 开发硬件设备是一台14年款的Apple Macbook Air

.NET Core开发日志——Dapper与MySQL

Dapper作为.NET生态中广为人知的轻量级ORM类库在.NET Core里仍能被有效利用,并且其不但可以连通SQL Server数据库还提供对其它数据库,比如MySQL的支持.这里试验了一下通过Dapper连接MySQL的方法. MySQL 可以选择直接安装在原生系统中或是Docker里. Official Docker Table 在MySQL中建立两张表. city表: CREATE TABLE `city` ( `ID` int(11) NOT NULL AUTO_INCREMENT,

第一个ADO.NET连接SQl server数据库

ado.net连接sql server2008本机数据库 1.只连接数据库,然后做简单查询 1 using (SqlConnection conn = new SqlConnection("Data Source=127.0.0.1; Initial Catalog=MyTest;User ID=sa;Password=123456")) 2 { 3 conn.Open(); 4 using (SqlCommand cmd = conn.CreateCommand()) 5 { 6 l

C# ADO.NET访问SQL Server数据库&lt;转&gt;

ADO.NET的对象主要包括Connection.Command.DataReader.DataAdapter.DataSet,ADO.NET访问数据库主要包括两个步骤:建立数据库连接.读取或更新数据. 一.建立数据库连接 Connection对象负责建立和控制用户应用程序和数据库之间的连接.所有的数据库连接都要用到连接字符串,该字符串是使用分号隔开的多项信息,其内容随着数据库类型和访问内容的变化而变化. 连接字符串的格式:"Server=服务器名或服务器IP地址;DataBase=数据库名称;