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

 

posted @   兴杰  阅读(275)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
历史上的今天:
2021-07-25 Azure 入门系列 (第五篇 Azure Storage)
点击右上角即可分享
微信分享提示