라벨이 PostgreSQL인 게시물 표시

2021년 목표설정

이미지
기본적으로 작년에 달성하지 못한 것들을 하려고 생각중인데..코로나가 언제까지 이어질지, 한국이나 북해도는 갈 수 있을지..자격증은 응시 가능할지..여러가지가 불확실하다. 2021년은 무엇보다 정신적인 부분과 경제적인 부분에 중점을 두고 조금 더 치열하게 지내보고 싶다. 일본나이로도 30대 마지막 해, 이제 불혹에 접어드는 나이..복잡하지만 심플하게. 육체적목표 : 트라이에슬론 스탠다드 도전하기 정신적 : 자격증2개 도전 + 자체개발 서비스 론칭 가족적 : 가정의 평화를 유지하기 경제적 : 외식과 유흥비를 줄이고 부수입을 늘려서 결과적으로 저축하기 사회적 : 목표세미나를 포함해서 민단과 개인인맥의 활성화와 교류를 촉진하기

[메모] Entity Framework 를 이용한 데이터조작

Npgsql과 Entity Framework를 설치한 후, using으로 데이터 관련 라이브러리를 추가한 후, 아래와 같이 사용할 수 있음. 기본적으로는 DbContext 모델을 만든 후, 그 모델에 접근해서 데이터를 조작한다. 여기서는 effects 라는 테이블에 id (pk), effectname (char) 라는 두 개의 컬럼이 있다고 가정하고, 기본적인 CRUD 를 해 봤다. LINQ는 좀 더 공부를 해야할 듯. 자주 쓰면 익숙해지겠지..?? <참고> はじめての LINQ Entity Framework 記事の一覧(iPentec.com) using   System ; using   System . Data ; using   System . Linq ; using   System . Data . SqlClient ; using   System . Data . Entity ; using   Npgsql ; namespace   NpgsqlEF6TestApp {      public   partial   class   Form1  :  Form     {          public   Form1 ()         {              InitializeComponent ();              using  ( var ...

[메모] PostgreSQL에서 Insert 하는 경우 자동채번 PK가 중복에러 나는 경우

PostgreSQL에서 Entity Framework를 사용해서 DB조작할 때 에러에 대한 메모. id컬럼을 Serial형(Auto Increasing)으로 만든 테이블에 id 값을 생략한 형식으로 INSERT를 하려고 했더니 다음과 같은 에러가 났다. ERROR: 重複キーが一意性制約" table_pkey "に違反しています。 ERROR: duplicate key value violates unique constraint "table_pkey" 초기화 SQL 스크립트로 데이터만 집어넣은 컬럼이라 치가 중복이 된 건 아니고, 왜 이런 에러가 나는지 감이 안잡혔는데 다음 링크에서 해답을 얻었다. PostgreSQLでINSERT時に自動採番の主キーが重複してエラーが出る場合の対処法 요약을 하자면, PostgreSQL에서는 자동으로 증가하는 번호를 시퀀스 오브젝트를 사용하여 내부적으로 관리하는데 이걸 수동으로 변경하거나 데이터를 외부에서 삽입 혹은 복사하게 되면 실제 컬럼에 들어간 값과 시퀀스 오브젝트의 값이 달라지게 되어서 문제가 생기는 경우가 있다. 내 경우에는 스크립트로 SQL 을 직접 입력해서 값을 삽입한 것이 문제가 된 듯. 이것을 확인하고 수정하는 건 다음의 3단계를 거친다. 실제 테이블 컬럼값의 최대치를 확인 >> SELECT MAX(id) FROM table; 시퀀스 오브젝트 값 확인 >> SELECT nextval('table_id_seq'); 두 값이 일치하면 문제가 없음. 두 값이 불일치하는 경우, 시퀀스 오브젝트 값을 테이블 컬럼값으로 변경해준다. >> SELECT setval('table_id_seq', (SELECT MAX(id) FROM table));

[C#] EntityFramework6 for NpgSQL을 이용해서 edmx생성하기

이미지
l   결론 VS2017&2019 + .NET Framework 4.6.1 ( 4.7.1도 가능 ) + Entity Framework 6.2.0 + Npgsql 4.0.7의 조합으로  PostgreSQL 9.6 서버에 접속 후 、 Entity Data Model의 위자드를 사용하여 기존에 있던 데이터베이스를 참조해서  edmx 모델을 생성하는데 성공함.  NuGet 패키지메니저를 사용해서 필요한 라이브러리를 참조추가 &  NpgSQL의  vsix 패키지를 이용해서  ADO.NET의  Entity Data Model에  Provider 항목에 PostgreSQL을 추가하면 사용가능함. 모델클래스와 소스코드의 편집과 수정에 대한 확인은 하지 않았음. l   테스트 환경(전부 일본어 환경임..ㅠㅠ) Ø   Visual Studio 2019 & .NET Framework 4.6.1 Ø   Entity Framework 6.2.0 & Entity Framework for Npgsql 3.2.1.1 Ø   PostgreSQL 9.6+pgAdmin 3 l   작업순서 및 내용 ①       솔루션탐색기의 프로젝트명에서 오른쪽 클릭 후, 서브메뉴에서  「追加」⇒「新しい項目」 를 선택한다. ②       새로운 항목추가 화면에서 아이템리스트에서 「データ」를 선택 후, 항목리스트에서 「 ADO.NET Entity Data Model 」을 선택한 후 이름을 입력하고 「追加」버튼을 클릭한다.   ③       Entity Data Model 위자드(한국어판은 마법사??)가 표시되면 「データベースから EF Designer 」를 선택하고 「次へ」버튼을 클릭한다. ...

[C#] Npgsql을 이용해서 CRUD 하는 방법

이미지
C#은 MSSQL하고 궁합이 좋다고들 하는데 비싸서..보통 프로젝트에는 무료DBMS를 사용하게 됨. 회사에서 자주 사용하는 건 PostgreSQL9 버전인데..옛날처럼 SQL문 그대로 때려박으면 때려박힌다..ㅋㅋ ADO.NET이나 Entity Framework 를 사용해서 추상 개체 모델을 만들어 데이터를 핸들링 하라는데.. Postgre로 Eneity Framework를 해보려다가 포기랄까..실패 ㅋㅋ 이유는 자동으로 모델을 만들어주는 방법이 있는데 중간에 계속 에러가 나더라..edmx 개념도 아직은 핀트가 안 오고 ADO도 제대로 써본 적이 없어서.. 동영상 강의를 찾아보니 ADO.NET 을 사용하는 방법이 더 자료가 많길래 따라하면서 학습했다. 어렵지는 않았지만..너무 프로그래밍 안하고 등한시 하다보니까 이런 게 신기하게 느껴지네 ㅎㅎ 이하 메모와 소스코드. [개요] PostgreSQL9.4 에 Npgsql로 접속 후, 테이블에 있는 내용을 Dataset으로 긁어와서 GridView에 출력 문자열과 숫자 데이터를 입력해서 데이터를 추가(INSERT) 할 수 있음. 그리드의 데이터를 선택해서 수정(UPDATE) 혹은 삭제(DELETE) 할 수 있음. 새로고침(REFRESH) 버튼을 누르면 데이터를 최신상태(DB에 있는 내용)로 갱신한다. [메모] 솔루션 탐색기에서 [추가] -> [Nuget패키지] 들어가서 Npgsql을 검색해서 참조추가를 해야 함. using Npgsql 필요 DB커넥션 개체등 필요에 의해 개체를 생성, Npgsql~이라는 이름이 붙어있음. DB데이터를 조작하는 방법은 직접적인 방법(연결형)과 간접적인 방법(비연결형)이 있음. 연결형은 데이터베이스 서버에 계속 붙어서 리얼타임으로 데이터를 처리하는 방식임. 비연결형은 데이터베이스에서 데이터를 읽어와서 로컬의 메모리에 올려두고 데이터어뎁터와 데이터셋을 이용함. @마크가 붙은 것은 파라메터로 DB에 질의를 할 때 복수의 데이터를...