반응형

보통 DB Connection string은 appsettings.Development.json에 보관하여 이용한다.
 
"ConnectionStrings": {
    "DefaultConnection": "Data Source=myserverip;Initial Catalog=mydb;User ID=myid;Password=mypwd;"
  }

dbContext 방식으로 된 예제들은 많지만 ADO.NET으로 가져오려면 막막해진다.
물론 MS 문서에 버젓이 있지만 늘 그렇듯 생경한 느낌을 지울 수 없고 매번 바꿔대어 찾기가 힘들다.
https://learn.microsoft.com/ko-kr/aspnet/core/fundamentals/configuration/?view=aspnetcore-7.0

방식은 이러하다.
기본 프로젝트를 기준으로 
private readonly IConfiguration _config; 를 선언해주고
IConfiguration config를 넘겨준 후 
_config.GetSection("ConnectionStrings").GetSection("DefaultConnection").Value 로 불러와서 사용하면 그만이다.


namespace Sample.Controllers
{
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
        private readonly IConfiguration _config;

        public HomeController(ILogger<HomeController> logger, IConfiguration config)
        {
            _logger = logger;
            _config = config;
        }

        public IActionResult Index()
        {
            return View();
        }

        public IActionResult TicketList()
        {
            var dt = new DataTable();

            string strConnection = _config.GetSection("ConnectionStrings").GetSection("DefaultConnection").Value;

            using (var conn = new SqlConnection(strConnection))
            {
                conn.Open();

                using (var cmd = new SqlCommand())
                {
                    int nIDX = 100;

                    cmd.Connection = conn;
                    cmd.CommandText = @"
                                        SELECT
                                            *
                                        FROM
                                            IN_TABLENAME
                                        WHERE
                                            IDX > @idx
                                        ORDER BY
                                            IDX DESC
                                        ";

                    cmd.Parameters.AddWithValue("@idx", nIDX);

                    var reader = cmd.ExecuteReader();

                    dt.Load(reader);
                }
            }

            ViewData["dt"] = dt;

            return View();
        }

        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }
}

반응형
Posted by Hippalus
,