using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Npgsql; using NpgsqlTypes; namespace TTSW.Utils { public class MyDatabase : IMyDatabase { public IConfiguration Configuration { get; set; } public MyDatabase(IConfiguration configuration) { Configuration = configuration; } public DataTable ExecuteDataTableNpgsql(string queryString, List para) { System.Data.DataSet ds = new DataSet(); var DB_HOST = Environment.GetEnvironmentVariable("DB_HOST"); var DB_PORT = Environment.GetEnvironmentVariable("DB_PORT"); var DB_NAME = Environment.GetEnvironmentVariable("DB_NAME"); var DB_USERNAME = Environment.GetEnvironmentVariable("DB_USERNAME"); var DB_PASSWORD = Environment.GetEnvironmentVariable("DB_PASSWORD"); var envConnectionString = $"Server={DB_HOST};Port={DB_PORT};Database={DB_NAME};User ID={DB_USERNAME};Password={DB_PASSWORD};"; string connectionString = !string.IsNullOrEmpty(DB_HOST) ? envConnectionString : Configuration.GetConnectionString("externalDBConnectionString"); using (NpgsqlConnection conn = new NpgsqlConnection(connectionString)) using (NpgsqlCommand cmd = new NpgsqlCommand(queryString, conn)) { if (para != null) cmd.Parameters.AddRange(para.ToArray()); using (NpgsqlDataAdapter ad = new NpgsqlDataAdapter(cmd)) { ad.Fill(ds, "mytable"); } } return ds.Tables["mytable"]; } public int ExecuteNonQueryNpgsql(string queryString, List para) { int rowAffected = -1; string connectionString = Configuration.GetConnectionString("externalDBConnectionString"); using (NpgsqlConnection conn = new NpgsqlConnection(connectionString)) using (NpgsqlCommand cmd = new NpgsqlCommand(queryString, conn)) { conn.Open(); if (para != null) cmd.Parameters.AddRange(para.ToArray()); rowAffected = cmd.ExecuteNonQuery(); } return rowAffected; } public string ExecuteScalarNpgsql(string queryString, List para) { string result = ""; string connectionString = Configuration.GetConnectionString("externalDBConnectionString"); using (NpgsqlConnection conn = new NpgsqlConnection(connectionString)) using (NpgsqlCommand cmd = new NpgsqlCommand(queryString, conn)) { conn.Open(); if (para != null) cmd.Parameters.AddRange(para.ToArray()); result = cmd.ExecuteScalar().ToString(); } return result; } public List GetParameterListNpgsql() { return new List(); } public NpgsqlParameter GetParameterNpgsql(string name, NpgsqlDbType type, int size, object value) { var i = new NpgsqlParameter(name, type, size); i.Value = value; return i; } public NpgsqlParameter GetParameterNpgsql(string name, NpgsqlDbType type, object value) { var i = new NpgsqlParameter(name, type); i.Value = value; return i; } } }