BStorm.Tools.Database
1.0.1
dotnet add package BStorm.Tools.Database --version 1.0.1
NuGet\Install-Package BStorm.Tools.Database -Version 1.0.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="BStorm.Tools.Database" Version="1.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add BStorm.Tools.Database --version 1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: BStorm.Tools.Database, 1.0.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install BStorm.Tools.Database as a Cake Addin
#addin nuget:?package=BStorm.Tools.Database&version=1.0.1
// Install BStorm.Tools.Database as a Cake Tool
#tool nuget:?package=BStorm.Tools.Database&version=1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
###BStorm.Tools.Database
Simple classe de connexion au bases de donnée proposant des méthodes d'extension sur le type DbConnection :
ExecuteScalar, ExecuteNonQuery, ExecuteReader
Cette classe est utilisée à des fins pédagogiques dans le cadre du cours d'Ado en C#
using System.Data.Common;
using System.Data;
using System.Reflection;
namespace BStorm.Tools.Database
{
public static class DbConnectionExtensions
{
private static void EnsureValidConnection(this DbConnection dbConnection)
{
if (dbConnection is null)
{
throw new ArgumentNullException("The connection is null!!");
}
if (dbConnection.State is not ConnectionState.Open)
{
throw new InvalidOperationException("The connection must be opened!!");
}
}
public static int ExecuteNonQuery(this DbConnection dbConnection, string query, bool isStoredProcedure = false, object? parameters = null)
{
dbConnection.EnsureValidConnection();
using (DbCommand dbCommand = CreateCommand(dbConnection, query, isStoredProcedure, parameters))
{
return dbCommand.ExecuteNonQuery();
}
}
public static object? ExecuteScalar(this DbConnection dbConnection, string query, bool isStoredProcedure = false, object? parameters = null)
{
dbConnection.EnsureValidConnection();
using (DbCommand dbCommand = CreateCommand(dbConnection, query, isStoredProcedure, parameters))
{
object? result = dbCommand.ExecuteScalar();
return result is DBNull ? null : result;
}
}
public static IEnumerable<T> ExecuteReader<T>(this DbConnection dbConnection, string query, Func<IDataRecord, T> mapper, bool isStoredProcedure = false, object? parameters = null)
{
dbConnection.EnsureValidConnection();
using (DbCommand dbCommand = CreateCommand(dbConnection, query, isStoredProcedure, parameters))
{
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
{
while (dbDataReader.Read())
{
yield return mapper(dbDataReader);
}
}
}
}
private static DbCommand CreateCommand(DbConnection dbConnection, string query, bool isStoredProcedure, object? parameters)
{
DbCommand dbCommand = dbConnection.CreateCommand();
dbCommand.CommandText = query;
if (isStoredProcedure)
{
dbCommand.CommandType = CommandType.StoredProcedure;
}
if (parameters is not null)
{
Type type = parameters.GetType();
foreach (PropertyInfo propertyInfo in type.GetProperties().Where(pi => pi.CanRead))
{
DbParameter dbParameter = dbCommand.CreateParameter();
dbParameter.ParameterName = propertyInfo.Name;
dbParameter.Value = propertyInfo.GetMethod?.Invoke(parameters, null) ?? DBNull.Value;
dbCommand.Parameters.Add(dbParameter);
}
}
return dbCommand;
}
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.