본문으로 바로가기

C# Postgresql DB 트랜잭션 사용하기

category C# 2019. 9. 9. 14:43
반응형

안녕하세요 ! 흔히 여러개의 쿼리를 동시에 요청을 할 때는 트랜잭션을 사용하여 차례대로 처리가 되어야 하는데요!

C# 에서 Postgresql DB 트랜잭션 처리하는 부분을 보여드리겠습니다.

Postgresql DB 연결 방법은 지난 번에 작성한 글을 참고해주시면 감사하겠습니다.

단, 이번엔 쿼리문을 StringBuilder 이용하여 작성했기 때문에 지난 번에 작성한 글과는 조금 다를 수 있습니다.

하지만 Postgresql DB 연결은 똑같습니다.

 

1. Postgresql DB Insert 문 입니다. StringBuilder 을 사용한 부분입니다.

   쿼리 메서드는 Postgresql_Insert 메서드를 호출 하여 리턴된 Insert 값을 String배열 strSql에 넣고  

   ExecuteNonQuery() 메서드에 strSql을 담는 부분입니다.

 

 (생략) DBConnect DBC = new DBConnect();

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class cPostgresql_DataInsert
    {
        cLog log = new cLog();
        //============================================================
        //로컬 Postgresql 데이터 Insert 함수
        //==================================================
        public String Postgres_Insert()
        {
            StringBuilder sb = new StringBuilder();
            try
            {
                sb.Append("INSERT INTO tbl_test VALUES(");
                sb.Append("'" + StringData + "',");
                sb.Append("'" + StringData2 + "',");
                sb.Append(FrmMain.Test.Data1 + ",");
                sb.Append(FrmMain.Test.Data2 + ",");
                sb.Append(FrmMain.Test.Data3 + ",");
               
                sb.Append("'" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"+ "')");
            }
            catch (Exception e)
            {
                log.fn_LogWrite("PostgresqlInsert : " + e.Message.ToString());
            }
            return sb.ToString();
        }
 
        //================================================
        //쿼리 문 실행(트랜잭션) //
        //예시로 쿼리문 1번 // 
        public void Query()
        {
            String[] strSql = new String[1];
            strSql[0] = Postgres_Insert();
            DBC.fn_ExecuteNonQuery(strSql);
        }
    }
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

2. Postgresql DB 연동하는 클래스, 트랜잭션 처리하는 메서드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
public class DBConnect
    {
        private string strConn;
        private NpgsqlConnection sqlConn;
        public NpgsqlCommand cmd;
        cLog log = new cLog();
 
        //Postgresql DB 연동
        public void DBConnection()
        {
           
            //POSTGRESQL DB 연결
           strConn = "HOST=127.0.0.1;PORT=5432;USERNAME=postgres;PASSWORD=postgres;DATABASE=postgres";
            //POSTGRESQL DB 오픈
            sqlConn = new NpgsqlConnection(strConn);
            try
            {
              sqlConn.Open();
             
            }
            catch (Exception e)
            {
               MessageBox.Show(e.Message.ToString());
            }
            
        }
        
        public void DB_close()
        {
            sqlConn.Close();
        }
 
//트랜잭션 처리
        public int fn_ExecuteNonQuery(string[] strSql)
        {
            int iret = 0;
            int i;
            
    
            NpgsqlCommand cmd = sqlConn.CreateCommand();
            NpgsqlTransaction tran = sqlConn.BeginTransaction();// 
            cmd.Connection = sqlConn;
            cmd.Transaction = tran;
            try
            {
                for (i = 0; i < strSql.Length; i++)
                {
                    cmd.CommandText = strSql[i];
                    iret += cmd.ExecuteNonQuery();//정상이면 1 리턴
                }
                tran.Commit();
                log.fn_LogWrite("커밋완료");
            }
            catch (Exception e)
            {
                tran.Rollback();
                iret = -1;
                log.fn_LogWrite(e.Message.ToString());
                
            }
            finally { }
            return iret;
        }
 
 
    }
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

 

[C#] - C# Postgresql 연동하기

 

C# Postgresql 연동하기

C# Postgresql DB 연동하기.. Postgresql DB를 연동하기 전에 우선 Npgsql 패키지를 참조해야 한다. Npgsql 패키지 참조 방법 1. 프로젝트 우측 클릭 후 Nuget 패키지 관리 2. 찾아보기 탭에서 Npgsql 입력 후 검..

dodo1054.tistory.com

 

반응형