본문 바로가기
프로그램 배포 비주얼 스튜디오를 release 모드로 바꿔주고 프로젝트를 다시 빌드한다프로젝트 폴더에서 확인하면 bin - release 폴더에 있는 파일로 배포하면 된다 닷넷 프레임워크로 제작한 프로그램이기에 닷넷 버전, 윈도우 운영체제에서만 실행 가능하다 2024. 10. 6.
저장프로시저 기존 crud에서 insert 구문을 프로시저를 이용해서 저장이 가능하게 변경하자 저장 프로시저를 추가하기 위해mssql을 켜서 db - 프로그래밍 기능 - 저장 프로시저 - 새 저장 프로시저를 생성한다 상단에 저자, 생성일, 내용등을 적어주고사용할 변수들을 @붙여서 정의begin 구문 안에 프로시저로 호출할 쿼리문을 작성한다SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: hoshi03-- Create date: 2024.10.06-- Description: -- =============================================CREATE PROCED.. 2024. 10. 6.
데이터베이스 연동 code first 방식 cs 파일에 작성한 코드를 기반으로 데이터베이스를 작성하고 연동해보자 Service 프로젝트에 Data 폴더를 추가하고nuget 패키지에서 엔티티코어와 sql서버를 설치, 닷넷 sdk가 5버전이라 둘다 5버전으로 설치했다  • db 연동 sql 서버를 실행해서 localhost, 원도우 인증으로 시작한다 새 데이터베이스 만들기로 하고 CodeFirstDB를 생성로그인 쪽에도 test라는 이름으로 CodeFirstDB를 사용할 사용자를 만들어주었다 test 1111으로 생성 appsettings.json에 db 접속 가능하게 사용자를 추가해주었다{ //db 접속 //DB접속정보 "ConnectionStrings": { "DefaultConnection": "Server=localhost;Data.. 2024. 10. 6.
DI 클래스 라이브러리로 data, service 등의 로직을 분리할 클래스를 만들고해당 클래스끼리 솔루션 탐색기에서 필요한 인터페이스와 참조성을 추가해준다 기존에는 mvc 프로젝트 안에서 model, view, controller를 모두 가지고 잇는 형태에서 데이터 프로젝트서비스 프로젝트웹 프로젝트 3개의 클래스로 분화시켰고 데이터 프로젝트에 데이터모델 폴더-user, 뷰 모델 폴더-로그인 정보서비스 프로젝트에 인터페이스 폴더 - 유저 정보 체크 인터페이스를 작성, 서비스 폴더 - 유저서비스에서 로그인 체크웹 프로젝트의  컨트롤러에서는 바뀐 인터페이스와 로그인 데이터 모델을 참조해서 사용하게 바꿨다 웹 프로젝트에 뷰에서는 기존에는 모델을 바로 가져왓으나 구조를 위처럼 바꿧기에 cshtml에@using MVC.. 2024. 10. 5.
MVC 프로젝트 시작하기 프로젝트 생성할때 ASP.NET Core Web App (Model-View-Controller)로 시작 멤버쉽컨트롤러 추가후 멤버쉽 컨트롤러 cs 파일 부분에 우클릭 후 뷰 추가,  뷰는 shared 폴더 아래의_Layout.cshtml로 추가하기 • 모델 로그인에 필요한 id, pw의 게터, 세터, 최소 글자수, 에러메시지, 뷰에 보여줄 이름을 정의namespace MVC.Models{ public class LoginInfo { [Display(Name = "id")] [Required(ErrorMessage = "id 입력")] [MinLength(4, ErrorMessage ="4자리 이상")] public string userID { get; set;} [Display(Name = ".. 2024. 10. 5.
윈폼 CRUD mssql에 기존에 만들어둔 test 스키마에 books 테이블 추가하고 책 데이터 넣어주기CREATE TABLE BOOKS ( BOOKNO int PRIMARY KEY, NAME varchar(50), CODE varchar(50) ); INSERT INTO BOOKS (BOOKNO, NAME, CODE)VALUES (1, '아기돼지3형제', '111111');INSERT INTO BOOKS (BOOKNO, NAME, CODE)VALUES (2, '톰과제리', '111112');INSERT INTO BOOKS (BOOKNO, NAME, CODE)VALUES (3, '인어공주', '111113');INSERT INTO .. 2024. 9. 25.
mssql 윈폼 연동 mssql 설치 후 데이터베이스에 새 데이터베이스를 추가한다 • db 연결 데이터베이스에 우클릭해서 새 데이터베이스를 만들어주고 .cs 파일에서 sqlconnection으로 mssql에 접속한다  //db연동을 위한 클래스 private SqlConnection sqlConnection = null; //ip, 포트, db이름, id, pw 순으로 connectionstring에 삽입 private string connectionString ="SERVER=127.0.0.1,1433;DATABASE=test;UID=sa;PASSWORD=1111";  private void btn1_Click(object sender, EventArgs e) .. 2024. 9. 25.
사용자 정의 컨트롤러 프로젝트에 사용자 정의 컨트롤을 추가 추가한 도구 상자에서 원하는 위젯을 가져다가 넣어두고 빌드하면윈폼창의 도구상자에서 만들어둔 컨트롤을 가져다가 사용 가능하다 이런 식으로 만들어 둔 걸 윈폼에서 사용자 정의 컨트롤을 가져와서 사용하려고 할때 접근 지정자 문제로 바로 컨트롤의 위젯에 접근은 불가능하다유저 컨트롤러에서 프로퍼티로 접근할 수 있게 해주자 public string label1text { get { return label1.Text; } set { label1.Text = value; } .. 2024. 9. 21.
단일 프로세스 멀티 프로세스 안하고 단일 프로세스 하는 이유 같은 프로그램 여러개 띄워서 충돌하거나 사용하는 사람이 작업중인 프로그램이 뭔지 햇갈려서 실수하는걸 방지 • Mutex 공유 자원을 한 프로세스가 단독으로 사용 가능하게 만들기 위해 뮤텍스를 사용Program.cs 의 실행 부분에 뮤텍스를 설정해 프로그램을 한개만 실행 가능하게 하는 코드 bool mutexLock = false; Mutex mutex = new Mutex(true, Assembly.GetEntryAssembly().FullName, out mutexLock); //이미 동일 프로세스가 생성되어있는지 체크하고 없을때만 새 프로세스 생성 if (mutexLock ==.. 2024. 9. 21.
이벤트 지금까지 ui배치 후 더블클릭 등으로 이벤트를 등록해서 사용했는데어떻게 이렇게 한 것 만으로 되는지 자세하게 알아보자 버튼의 클릭 이벤트를 처리할때 click 속성은 이벤트 핸들러 이고, 이벤트 핸들러는 델리게이트 타입이다.그러므로 델리게이트 문법을 사용해서 해당 동작을 할때 발생시킬 메서드를 등록할 수 있다 기존 델리게이트 문법보다 훨씬 편하게클릭 동작할때 얘도 실행해줘 하는 형태로 전달해주면 아래와 같은 경우에는 btn1이 뜬 후 확인하면 clicked2도 팝업된다 - 이벤트 핸들러 원형void 타입이기에 전달해주는 메서드 또한 void 타입으로 전달해줘야 한다.. 그렇지 않으면 당연히 빨간줄뜸public delegate void EventHandler(object sender, EventArgs e.. 2024. 9. 21.
윈폼 datatable, dataset, datagridview • datatable 사용datagridview 안에 데이터테이블을 넣어서 표현해보자form에 datagridview를 만들어서 넣어두고 폼이 초기화될때 데이터테이블이 들어가게 하는 방식private void Form1_Load(object sender, EventArgs e){ DataTable dt = new DataTable(); DataColumn dc = new DataColumn(); dc.ColumnName = "int"; dc.DataType = typeof(Int32); DataColumn dc2 = new DataColumn(); dc2.ColumnName = "name"; dc2.DataType = typeof(string); dt.Colum.. 2024. 9. 21.
윈폼 시작하기 2 (판넬, 스플리터, 테이블 레이아웃 판넬, 툴스트립) • toolstrip 이미지 있는 버튼이나 다양한 UI을 추가, 당연히 추가한 버튼 등에 이벤트 등록 가능  • panel & spliterspliter를 panel과 함께 사용해서 작업 영역을 구분할때 사용속성에서 dock 속성을 이용해서 어디를 구분할지 설정패널도 패널 속성의 dock을 이용해서 배치해서 작업영역을 설정하고 스플리터로 경계면을 설정하는걸로 이해했다 •  table layout panel   테이블 레이아웃 우상단 버튼을 눌러서 행/열의 크기나 갯수를 변경 가능하다테이블 안에 있는 오브젝트들은 columnspan속성과 rowspan 속성을 이용해서 몇 칸을 차지할건지 설정 가능하다 2024. 9. 21.
윈폼 시작하기 (이벤트, MDI, 로그인) 윈폼을 하는 이유유니티로 하는 프로젝트를 몇번 해보면서 닷넷.. C#.. 해볼까? 라는 생각을 하게 되었고기존에 해본 QT와 같은 GUI 기반에 웹 개발, 스마트팩토리나 iot 분야 등 다양한 분야로 사용 할 수 있는 프레임워크라 생각해 기술스택 확장, 직업선택의 폭을 넓히기 위해 윈폼을 공부해보자!복습을 위해 기록해두면 미래의 내가 보고 복습할거라 믿는다 비주얼 스튜디오에서 윈폼 으로 프로젝트 만들어서 시작윈폼 창에서 도구 상자에서 오브젝트 가져다가, 해당 오브젝트(버튼,라벨) 속성에 보이는 이벤트를 코드로 정의해서발생시킬 수 있다  button1.Click += MyButton_Click; private void MyButton_Click(object sender, EventArgs e).. 2024. 9. 21.