ASP.NET Core – ADO.NET
前言
自从用 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...
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
2021-07-25 Azure 入门系列 (第五篇 Azure Storage)