반응형
안녕하세요 ! 흔히 여러개의 쿼리를 동시에 요청을 할 때는 트랜잭션을 사용하여 차례대로 처리가 되어야 하는데요!
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(");
}
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
{
}
catch (Exception e)
{
}
}
public void DB_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
{
{
cmd.CommandText = strSql[i];
iret += cmd.ExecuteNonQuery();//정상이면 1 리턴
}
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# 윈폼 실행파일 단독으로 실행하는 방법 (0) | 2019.09.16 |
---|---|
C# 윈폼 중복실행 방지(간단한 방법..) (0) | 2019.09.11 |
C# PROCEDURE I does not exist(해결) (0) | 2019.09.03 |
C# byte를 Bitarray 배열로 변환하기 (0) | 2019.09.02 |
C# DNS 로 서버 접속하기 (0) | 2019.08.30 |