美文网首页.NET Core.net
.NET Core中ADO.NET SqlClient的使用与常

.NET Core中ADO.NET SqlClient的使用与常

作者: p了个f | 来源:发表于2017-06-29 17:16 被阅读70次

一、简介
  在很多要求性能的项目中,我们都要使用传统的ADO.NET的方式来完成我们日常的工作;目前有一些网友问有关于.NET Core操作SQL Server的问题在本文中解答一下。
  本文旨在指出,在.NET Core中使用ADO.NET SqlClient操作SQL SERVER数据库时的一些常见的问题,在本文的第三部分,如果只关心解决问题,请跳过第两部分进行阅读。
二、使用ADO.NET
  首先建立好一个ASP.NET MVC Core Project 或 .NET Core Class Library Project , 当然也可以是一个控制台程序;
  要使用ADO.NET和SQLCLient就要引用System.Data.CommonSystem.Data.SqlClient两个程序集,点这两个名称可以跳到它们的Nuget地址。
  在.NET CORE的ADO.NET中功能被程序集所划分,其实System.Data.Common封装的就是ADO.NET的抽象部分,它包含如下命名空间和类型:

System.Data.Common.DbConnection
System.Data.Common.DbException
System.Data.Common.DbParameter
System.Data.DbType
System.Data.Common.DbDataReader
System.Data.Common.DbCommand
System.Data.Common.DbTransaction
System.Data.Common.DbParameterCollection
System.Data.Common.DbProviderFactory

可以使用两种方法进行安装:
 1.NuGet
PM> Install-Package System.Data.Common

PM> Install-Package System.Data.SqlClient

2.Project.json

"dependencies": {
    "System.Data.Common": "4.1.0-*",
    "System.Data.SqlClient" :  "4.1.0-*",
   "System.Runtime": "4.1.0-*"
}

3.使用SqlClient

using System;
using System.Data.SqlClient;

namespace DBTest
{
    public class Program
    {
        public static void Main(string[] args)
        {
            using (SqlConnection con = new SqlConnection(ConnStr)) {
                con.Open();
                try {
                    using (SqlCommand command = new SqlCommand("SELECT * FROM SAMPLETABLE", con)) {
                        command.ExecuteNonQuery();
                    }
                }
                catch {
                    Console.WriteLine("Something went wrong");
                }
            }
            Console.Read();
        }
    }
}

三、常见问题
 1.SQL Server版本问题
  这个问题,表象上体现的是一个连接超时的错误:

Unhandled Exception: System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 35 - An internal exception was caught) ---> System.AggregateException: One or more errors occurred. (No such device or address) ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No such device or address

但是这个错误却是因为SQL Server的版本问题造成的,.NET Core中的SqlClient能支持的SQL Server最小版本为 SQL Server 2008 R2 SP3,如果你的数据库小于这个版本,就会出现这个异常。
  官方的Issues在此:https://github.com/dotnet/corefx/issues/9719
  SQL Server 2008 R2 SP3补丁的下载地址如下:
  https://www.microsoft.com/zh-cn/download/details.aspx?id=44271
  还有就是将连接字符串中的加入Mul‌?tipleActiveResultSet‌?s=false
 2.Runtime运行时问题
  在部署到Windows和IIS时,System.Data.SqlClient 这个程序集在Windows环境用会依赖于VC++的运行时,目前依赖的为: Microsoft Visual C++ 2012 Runtime

阅读原文

相关文章

  • .NET Core中ADO.NET SqlClient的使用与常

    一、简介在很多要求性能的项目中,我们都要使用传统的ADO.NET的方式来完成我们日常的工作;目前有一些网友问有关于...

  • 11.9c#总结

    9号 ADO.NET数据库 从三个方面学习数据库,掌握ADO.NET 的功能和组成,掌握使用 Connection...

  • ADO.NET入门

    ADO.NET ADO.NET是用于数据的访问的组件 Connection对象 用于建立数据源与应用程序之间的连接...

  • .net core1.1 跨域请求设置

    .net core 跨域请求设置 在.net core 中使用是相当简单的 项目中安装使用的是 .net core...

  • EF框架

    什么是Entity Framework ADO.NET Entiry Framework是微软以ado.net为基...

  • 登录用户验证功能设计

    连接技术 数据库访问技术:ADO.NET ADO.NET操作数据库结构图 ADO.NET提供的四个核心对象 ADO...

  • 2.8

    2.8商品信息查询修改界面功能设计 1.什么是ADO.NET? ado.net提供与数据源进行交互的相关的公共方法...

  • 将一大坨的事务代码简化成2行代码

    在使用ADO.NET时,如果自己弄事务,代码一般是这样的: 我们要在try里面的BeginTransaction与...

  • C#入门数据库增删改查

    在C#中ADO.NET技术提供了对数据源的访问,ADO.NET是一个类库,包含了Conection 对象、Coma...

  • asp.net core 使用 signalr(二)

    asp.net core 使用 signalR(二) Intro 上次介绍了 asp.net core 中使用 s...

网友评论

    本文标题:.NET Core中ADO.NET SqlClient的使用与常

    本文链接:https://www.haomeiwen.com/subject/ytqvcxtx.html