
local 접속 후 데이터베이스 계정 로그인 안 될 때
-> hannom.tistory.com/195 참고
using System.Data.SqlClient;
using System.Data;
// using 등록해야 할 것들
public IActionResult TicketList()
{
var dt = new DataTable();
// 다른 곳에서 참조가 되면 남아 있을 수 있기 때문에 명시적으로 코딩 하는 게 좋음 (using)
using (var conn = new SqlConnection("Server=DESKTOP-2H5KO6N\\SQLEXPRESS;Database = myweb;User ID = sa;password = sa1234"))
{
conn.Open();
#region [sql 구문 작성법]
/*
* string sta = "ddd"
WHERE 구문에서 a.status = sta + '%' 이런 식으로 쓰면 안 되는 이유
-> 사용자가 악의적으로 sta 변수에 OR '1' = '1' 같은 변수를 넣었을 경우 select 문으로 테이블의 모든 값을 조회할 수
있기 때문에 보안상으로도 올바르지 않음 (sql 해킹법으로 많이 쓰인다)
*/
#endregion
using (var cmd = new SqlCommand())
{
string status = "In Progress";
cmd.Connection = conn;
cmd.CommandText = @"
SELECT
A.ticket_id
,A.title
,A.status
FROM
t_ticket A
WHERE
A.status = @status
";
cmd.Parameters.AddWithValue("@status", status);
var reader = cmd.ExecuteReader(); // READ 부분 select~
dt.Load(reader);
//cmd.ExecuteNonQuery(); // CURD 처리 부분 (insert, update, delete) int 값 반환
}
}
ViewData["Dt"] = dt;
return View();
}
- HomeController.cs
DB 연동 방법 다양함. appsettings.json에서 바로 연동해 주는 방법이 있고, 해당 페이지에서만 연동해 주는 방법이 있는데
해당 페이지에서만 연동하는 방법으로 HomeController에서 ticketList 페이지에서만 ticket 테이블 조회할 수 있도록 연동
@{
var dt = ViewData["dt"] as System.Data.DataTable;
}
-- 해당하는 html의 cshtml 위에 데이터 테이블 전달
<tbody>
@foreach(System.Data.DataRow row in dt.Rows)
{
<tr>
<td>@row["status"]</td>
<td>@row["title"]</td>
<td>@row["ticket_id"]</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
}
</tbody>
Ticket.cshtml
-> 데이터를 표시할 부분에 전달
기본적인 데이터 구조는 이렇게 흘러감
MVC의 Model을 사용해서 쓰는 방법 필요
'Develop > ASP.NET CORE' 카테고리의 다른 글
05 - Database 연동 (0) | 2021.03.04 |
---|---|
04 - Layout 구성 (0) | 2021.03.04 |
03 - 데이터 전달 (0) | 2021.03.03 |
02 - MVC 프로젝트 생성 (0) | 2021.03.03 |
01 - ASP.NET CORE 시작하기 (0) | 2021.03.03 |