ASP.NET Core – ADO.NET
2023-09-27 14:23:55 时间
前言
自从用 Entity Framework 就再也没有用过 ADO.NET 了. 很多年前写过 基础 ADO.NET 访问MYSQL 与 MSSQL 数据库例子.
今天刚好想做个单侧, 那就顺便翻新一下呗.
安装
dotnet new console -o TestAdoNet
dotnet add package Microsoft.Data.SqlClient
是 Microsoft.Data.SqlClient 而不是 System.Data.SqlClient 哦, 不要搞混了.
而且用 Microsoft.Data.SqlClient 的话 connection string 一定要 TrustServerCertificate, 参考1, 参考2
Connection
namespace TestAdoNet; public class Program { public static async Task Main() { var connectionStringBuilder = new SqlConnectionStringBuilder( $"Server=192.168.1.152;Database=MyDatabase;User Id=username;TrustServerCertificate=True;" ) { Password = "my password" }; using var connection = new SqlConnection(connectionStringBuilder.ConnectionString); await connection.OpenAsync(); } }
记得要 using 哦, using 结束 connect 也会自动 close.
Command
using var command = new SqlCommand { Connection = connection, CommandText = "SELECT * FROM [Products] WHERE [title] = @title", }; command.Parameters.Add(new SqlParameter("@title", "Fly Sticky Pad Type 1"));
防止 SQL Inject 记得用 Parameter 哦
Read Result
using var reader = await command.ExecuteReaderAsync(); while (await reader.ReadAsync()) // loop rows { for (var i = 0; i < reader.FieldCount; i++) // loop columns { var name = reader.GetName(i); var filedType = reader.GetFieldType(i); var value = reader.GetValue(i); } var id = reader.GetInt32("Id"); // get known column value }
Put result into Table
reader 只能读取一轮, 如果想复读可以把它装进 table 里
var table = new DataTable(); table.Load(reader); // 需要强转去 DataRow 和 DataColumn 哦 foreach (DataRow row in table.Rows) // loop rows { foreach (DataColumn column in table.Columns) // loop column { if (column.ColumnName == "id") { row.Field<int>(column); // get by column var cell1 = row.Field<int>(0); // get by index } } foreach (var value in row.ItemArray) // loop cells { } }
其它
以后有用到才写 TODO...
相关文章
- ASP.NET Core Web APi获取原始请求内容
- 运行Vue在ASP.NET Core应用程序并部署在IIS上
- 学习ASP.NET Core Blazor编程系列文章之目录
- 学习ASP.NET Core Blazor编程系列八——数据校验
- 学习ASP.NET Core Blazor编程系列二十四——登录(3)
- 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(中)
- 学习ASP.NET Core Razor 编程系列十四——文件上传功能(二)
- 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面
- ExpandoObject与DynamicObject的使用 RabbitMQ与.net core(一)安装 RabbitMQ与.net core(二)Producer与Exchange ASP.NET Core 2.1 : 十五.图解路由(2.1 or earler) .NET Core中的一个接口多种实现的依赖注入与动态选择看这篇就够了
- Visual Studio Code(VS code)你们都在用吗?或许你们需要看一下这篇博文 Asp.Net Core + SignalR 实现实时通信 Net Core 下 Newtonsoft.Json 转换字符串 null 替换成string.Empty
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- ASP.NET MVC:通过 FileResult 向 浏览器 发送文件
- 【.NET Core】怎么使用Swagger
- asp.net页面生命周期之页面的终结阶段
- ASP.NET Web API实践系列04,通过Route等特性设置路由
- ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(三)
- 在ASP.NET Core中使用Apworks开发数据服务:对HAL的支持
- 欢迎阅读daxnet的新博客:一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
- 《精通 ASP.NET MVC 5》----1.8 本书所需的软件
- basic-http-authentication-in-asp-net-web-api-using-message-handlers asp.net mvc4 web api authentication
- ASP.NET Core 中的 Request Feature
- 使用 Autofac, MediatR 和 FluentValidator 构建松耦合 ASP.NET Core API 应用
- ASP.NET Web Pages - 添加 Razor 代码
- 接口 asp.net core 请求接口数据