본문 바로가기
반응형

PC&웹433

C# SQLitePCLRaw로 SQLite3 데이터베이스 접속하기 아래 패키지를 설치한다. Remove-Package Microsoft.Data.Sqlite Install-Package Microsoft.Data.Sqlite.Core Install-Package SQLitePCLRaw.core Install-Package SQLitePCLRaw.provider.sqlite3 명령어를 보면 무엇을 제거하고 무엇을 설치해야 하는지 알 수 있다. using 문을 추가한다. using Microsoft.Data.Sqlite; 아래처럼 프로바이더 설정을 하고 연결을 하면 Open() 까지 오류 없이 진행 된다. SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_sqlite3()); using (var conn = new Sqli.. 2023. 6. 1.
C# Microsoft.Extensions.Caching.Memory 대신 LazyCache로 캐싱 사용하기 데이터베이스에서 값이 거의 바뀌지 않으며 수시로 같은 값을 쿼리할 때마다 DB에서 데이터를 가져오는데, 캐시를 사용하고 싶었다. .NET에서 캐싱 - .NET | Microsoft Learn .NET에서 캐싱 - .NET .NET에서 메모리 내 및 분산 캐싱을 구현하는 효과적인 방법을 검색합니다. .NET 캐싱을 사용하여 앱 성능 및 확장성을 향상시킵니다. learn.microsoft.com 위 문서를 보면... Microsoft.Extensions.Caching.Memory 클래스를 사용해야 한다는 것까지는 알았는데 사용법이 너무 복잡하다. 이를 간단히 사용할 수 있는 방법을 찾아보았다. 단순한 캐싱 기능만을 원했기 때문에 Nuget을 찾아보니 LazyCache가 눈에 띄었다. 게으른 사람을 위한 최적.. 2023. 5. 30.
Visual Studio 2022 확장팩, Viasfora 무지개 괄호 VS Code에서도 사용하는 무지개 괄호 기능을 VS2022에서도 사용해봅니다. 확장 - 확장 관리 메뉴를 선택하고 검색을 하거나 도구 - 코딩에있는 Viasfora 팩을 선택하고 다운로드 버튼을 누릅니다. 또는 아래 페이지에서 내려받을 수 있습니다. Viasfora - Visual Studio Marketplace Viasfora - Visual Studio Marketplace Extension for Visual Studio - Add color to your Visual Studio Text Editor! marketplace.visualstudio.com VS를 재시작하면 설치가 진행됩니다. 2023. 5. 18.
Visual Studio의 리팩터링 방법이 바뀌다 (2023년) VS2022 16.x 버전대에서 F2 키를 눌러서 rename 기능을 사용할 때 심각한 문제점이 하나 있었다. (VS2019도 마찬가지였으며 2019년부터 증상이 보고 되었음) 바로, 한글 입력이 정상적으로 지원되지 않는 것. 정확히는 깨져버리는 현상인데, 예를들면, 어떤 개체 이름에 커서를 두고 F2 키를 눌러서 rename 창에서 바꿀 대상에 '한글'을 입력하면 ㅎ하한ㄱ그글 이렇게 초성, 중성, 종성이 나눠져서 입력돼버리는 증상이 나타난 것이었다. 처음 증상이 나타났을 때에는 고쳐지겠거니 하고 불편한 대로 사용했지만, 기능 버전업이 계속되면서도 한글 문제는 고쳐지지 않았다. 비슷한 문제로 보고된 기록을 보면 사람이 답변한 것은 찾아볼 수 없었고, 봇이 자동 응답한 것뿐이었다. 결국, 나도 마이크로소프.. 2023. 5. 5.
C#, ForEach 확장 메서드 사용하기 e(item) => { e.Width = lookUpEdit.Height / 2; } 어떤 Object가 가지고 있는 Collection의 배열 값을 한 줄로 수정하기 위와 같은 DevExpress ~Edit에 ButtonEdit를 사용했을 때, 버튼의 폭을 변경하려면 Width 값을 버튼마다 적용해야 한다. 1. foreach 반복문은 직접 수정이 안 되므로, 새 개체의 인스턴스를 만들고 새로운 값으로 할당하고 원래 개체에 대입하고 여러 줄을 사용하므로 지저분하다. 2. Select 등의 LINQ도 값을 변경 후 다시 대입해야 한다. 3. ConvertAll은 ToList로 변환해야 한다. 간편하게 한 줄로 처리하고 싶다. 일단 아래처럼 확장 메서드를 만들고 아무 파일 이름으로 저장한다. namespa.. 2023. 5. 4.
SQLite Primary Key 컬럼의 정수형 값을 사용시 오류 발생 SQLite3의 rowID는 Int64, Long 형식을 사용한다. DevExpress의 LookUpEdit 데이터 바인딩을 SQLite DataTable로 연결했을 때, lookUpEdit.EditValue에 정수값을 대입하면 Null이 유지되거나, ThrowExceptionOnInvalidLookUpEditValueType 옵션이 True일 때 형식이 다르다는 예외가 발생한다. 해결하려면, 대입하려는 값을 Int64(또는 long) 형식으로 바꾸면 된다. lookUpEdit.EditValue = 1; // 오류 lookUpEdit.EditValue = (long)1; // 정상 lookUpEdit.EditValue = ConvertToInt64(1); // 정상 2023. 5. 3.
C# DevExpress, ComboBoxEdit Item에 배경색 지정하기 C# 가계부에서 거래별로 색상을 지정하는 기능은 거래를 등록할 때 설정할 수 있다. 버튼으로 색상을 선택하는 방법도 있지만, 8가지만 사용하게 되어있으므로 콤보박스를 사용해본다. void Form_Load(object sender, EventArgs e) { comboBoxEdit1.Properties.Items.Clear(); comboBoxEdit1.Properties.Items.AddRange(new string[] { " ", " ", " ", " ", " ", " ", " ", " " }); } private void comboBoxEdit1_DrawItem(object sender, ListBoxDrawItemEventArgs e) { Color userColor = e.Index switch.. 2023. 5. 1.
C# DevExpress Grid 행 색상 지정 MMEX의 거래 테이블에서 색상 지정된 레코드는 행의 배경을 색으로 보여준다. 이렇게 보여주는 것을 C# DevExpress Grid에서 따라해보자. GridView 에서 RowStyle 이벤트를 사용한다. private void gridView1_RowStyle(object sender, RowStyleEventArgs e) { GridView view = sender as GridView; if(e.RowHandle >= 0) { int followUpID = view.GetRowCellDisplayText(e.RowHandle, view.Columns["FOLLOWUPID"]).ToInt(); Color userColor = followUpID switch { 1 => Color.FromArgb(2.. 2023. 5. 1.
SQLite Triggers 사용하기 거래 시점 날짜가 기록되는 TRANSDATE 필드가 문자열이다. 🤬 날짜 형식은 yyyy-MM-dd인데 시간도 기록하고 싶어서 트리거 기능을 사용하였다. 그 옆의 필드도 datetime 형식이 아니라 문자열이다. 내용은 datetime 양식이지만... 일일이 코딩하는게 귀찮아서 DB한테 떠넘길 때 사용한다. 명령어를 모르면 SQLite 편집기를 사용한다. (DB 편집기에서 레코드를 등록해도 트리거가 동작한다) SQLite Maestro에서 트리거 생성 테이블 또는 Triggers 메뉴에서 Create New Trigger...를 선택한다. 기준 테이블을 선택하고, 이름을 입력한다. 레코드를 삽입할 때는 어차피 트리거를 실행해줘야 하니 조건은 없어도 되고, 레코드를 수정할 때는 수정할 때마다 트리거를 당겨.. 2023. 5. 1.
반응형