.NET 8 Framework
C# (C-Sharp)
MSSql Database Manager with ADO.NET in C# (C-Sharp)
ตัวอย่างการเขียนคลาส DatabaseManager ในภาษา C# (C-Sharp), .NET 8 Framework
Ake Suwaphan
15 February 2024
MSSql Database Manager with ADO.NET in C# (C-Sharp)
การจัดการฐานข้อมูลเป็นส่วนสำคัญของโปรเจคซอฟต์แวร์ต่างๆ ผมจึงอยากจะเขียนคลาสที่ใช้สำหรับการจัดการฐานข้อมูลขึ้นมา โดยคลาส DatabaseManager จะช่วยในการเชื่อมต่อฐานข้อมูล, สร้างคำสั่ง SQL, สร้างพารามิเตอร์, ดำเนินการ ExecuteNonQuery, ExecuteScalar, และ GetDataReader
ตัวอย่างการเขียนคลาส DatabaseManager ในภาษา C# (C-Sharp), .NET 8 Framework
Using
using Microsoft.Data.SqlClient;
using System.Data.Common;
using System.Data;
class DatabaseManager
public class DatabaseManager
{
private IConfiguration Configuration;
protected string ConnectionString { get; set; }
public DatabaseManager()
{
this.ConnectionString = this.Configuration.GetConnectionString("SqlConnection");
}
private SqlConnection GetConnection()
{
SqlConnection connection = new SqlConnection(this.ConnectionString);
if (connection.State != ConnectionState.Open)
connection.Open();
return connection;
}
protected DbCommand GetCommand(DbConnection connection, string commandText, CommandType commandType)
{
SqlCommand command = new SqlCommand(commandText, connection as SqlConnection);
command.CommandType = commandType;
return command;
}
protected SqlParameter GetParameter(string parameter, object value)
{
SqlParameter parameterObject = new SqlParameter(parameter, value != null ? value : DBNull.Value);
parameterObject.Direction = ParameterDirection.Input;
return parameterObject;
}
protected SqlParameter GetParameterOut(string parameter, SqlDbType type, object value = null, ParameterDirection parameterDirection = ParameterDirection.InputOutput)
{
SqlParameter parameterObject = new SqlParameter(parameter, type); ;
if (type == SqlDbType.NVarChar || type == SqlDbType.VarChar || type == SqlDbType.NText || type == SqlDbType.Text)
{
parameterObject.Size = -1;
}
parameterObject.Direction = parameterDirection;
if (value != null)
{
parameterObject.Value = value;
}
.else
{
parameterObject.Value = DBNull.Value;
}
return parameterObject;
}
protected int ExecuteNonQuery(string procedureName, List<DbParameter> parameters, CommandType commandType = CommandType.StoredProcedure)
{
int returnValue = -1;
try
{
using (SqlConnection connection = this.GetConnection())
{
DbCommand cmd = this.GetCommand(connection, procedureName, commandType);
if (parameters != null && parameters.Count > 0)
{
cmd.Parameters.AddRange(parameters.ToArray());
}
returnValue = cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
.throw;
}
return returnValue;
}
protected object ExecuteScalar(string procedureName, List<SqlParameter> parameters)
{
object returnValue = null;
try
{
using (DbConnection connection = this.GetConnection())
{
DbCommand cmd = this.GetCommand(connection, procedureName, CommandType.StoredProcedure);
if (parameters != null && parameters.Count > 0)
{
cmd.Parameters.AddRange(parameters.ToArray());
}
returnValue = cmd.ExecuteScalar();
}
}
catch (Exception ex)
{
.throw;
}
return returnValue;
}
protected DbDataReader GetDataReader(string procedureName, List<DbParameter> parameters, CommandType commandType = CommandType.StoredProcedure)
{
DbDataReader ds;
try
{
DbConnection connection = this.GetConnection();
{
DbCommand cmd = this.GetCommand(connection, procedureName, commandType);
if (parameters != null && parameters.Count > 0)
{
cmd.Parameters.AddRange(parameters.ToArray());
}
ds = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
}
catch (Exception ex)
{
.throw;
}
return ds;
}
}
จากโปรแกรมด้านบนคลาส DatabaseManager ที่ให้บริการวิธีการเชื่อมต่อฐานข้อมูล, สร้างคำสั่ง SQL, สร้างพารามิเตอร์, ดำเนินการ ExecuteNonQuery, ExecuteScalar, และ GetDataReader. เราสามารถใช้คลาสนี้ในโปรเจค เพื่อจัดการกับฐานข้อมูลของเราได้