C#.NET Q&A

데이터베이스의 데이터변동시 알림 질문 whoyee 평점: 없음 조회: 241
데이터베이스의 데이터가 변동될 때 C#에 알림이 오도록 프로그램을 작성 중입니다
구글링 결과 mssql의 sqlDependency 를 사용하는 것이 편리해보여서 mssql과 연동했습니다
 
아래 프로그램 실행 후 mssql에서 1회 데이터 변경시 sqlDependency.OnChange가 잘 작동하여
정상적으로 Console.WriteLine("DB 변경시 실행 사항"); 이 출력됩니다
(mssql의 데이터 변경은 아래 프로그램이 아닌 다른 프로그램에서 변경시킵니다)
 
그런데 1회 데이터변경 이후 추가적인 데이터 변경을 할 경우 sqlDependency.OnChange 이벤트가 작동하지 않아
Console.WriteLine("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
//---------------------------------------------//
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;
namespace DB연동test
{
    public partial class Form1 : Form
    {
        string conStr = "Server=HOON-PC\\SQLEXPRESS;Integrated security=SSPI;database=testDB;";
        public Form1()
        {
            InitializeComponent();
            FormClosing += Form_Closing;
            
            SqlDependency.Start(conStr);
            DB연동테스트();
        }
        public void DB연동테스트()
        {
            string connectString = "Server=HOON-PC\\SQLEXPRESS;Integrated security=SSPI;database=testDB;";
            SqlConnection Conn = new SqlConnection(connectString);
            Conn.Open();
            string sqlcomm = "select [No],[att1], [att2], [att3], [att4], [att5], [att6] from dbo.testTable1";
            SqlCommand cmd = new SqlCommand(sqlcomm, Conn);
            cmd.Notification = null;
            SqlDependency sqlDependency = new SqlDependency(cmd);
            sqlDependency.OnChange += new OnChangeEventHandler(Dependency_OnChange);
            SqlDataReader rdr = cmd.ExecuteReader();
        }
        void Dependency_OnChange(object sender, SqlNotificationEventArgs e)
        {
            Console.WriteLine("DB변경발생");
            if (e.Info.ToString().StartsWith("Invalid")) // 에러
            {
                Console.WriteLine(e.Info.ToString());
            }
            else // 정상
            {
                Console.WriteLine("DB 변경시 실행 사항");
            }
        }
        private void Form_Closing(object sender, FormClosingEventArgs e)
        {
            SqlDependency.Stop(conStr);
            DialogResult dr = MessageBox.Show("종료하겠습니까?""종료확인", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
            if (dr == DialogResult.No)
            {
                e.Cancel = true;
            }
        }
    }
}
cs
 
 
태그 : 데이터변동 알림 C# mssql
작성자 정보
whoyee
Level 2
 [EXP.7/16]

메일:  비공개
글등록 +12 12 덧글등록 +3 3
자기소개
반갑습니다
글 공유하기 |
  tweet facebook
2018-07-11 오전 11:33:51
나도한마디
사용자
콩가루개발자            [2018-07-12]
Level 1
 [EXP.3/16]
참고링크상의 흐름을 본다면 Dependency_OnChange() 이벤트 핸들러의
Console.WriteLine("DB 변경시 실행 사항"); 밑에 DB연동테스트(); 가 빠져 있습니다.
사용자
whoyee            [2018-07-12]
Level 2
 [EXP.7/16]
감사합니다 말씀해주신데로 수정했더니 해결되었습니다
태그로 엮인글
[C#.NET Q&A] 혹시 XP에서 OTF가 winform에만 적용이 안 될 수도 있나요?   Mr황
[구인&교육정보] [ 기흥 / 수원 ] .NET 생산업무 시스템 중급 [ 개발 / 운영 ]  한국정보데이터시스
[구인&교육정보] [기흥]생산관리) C# 중급 개발자 모집(즉시)  인텍솔루션(주)
[C#.NET Q&A] 비동기 작업관련 질문드립니다..[3]  저런
[C#.NET Q&A] c# label에 background 이미지를 넣는것 (메모리 관련)[2]  Tube
[구인&교육정보] C#ASP.NET(중급~고급)개발자 모십니다  장자방
[구인&교육정보] C# .Net 개발자 구인, 방배동, 단기(1개월)  킴스필
[C#.NET Q&A] c# winform 폰트 관련 질문이 있습니다.  Mr황
[C#.NET Q&A] 시리얼 통신 수신 및 에러 이벤트 관련 질문입니다![2]+1  기먼조기
[구인&교육정보] C#, 닷넷, MSSQL(고급)개발자 모십니다  장자방
글리스트
c# 라즈베리파이 시리얼 통신시 한글 깨짐 수정 .. [1]+1  호에엥
1[2]+1  빠라밤바
C# Windows Forms Timer 관련 질문[1]  shdid
API 일정 주기 호출 및 데이터처리 방안 문의  손잡이
object에 object를 어떻게 넣어요?[1]  홍모죽
데이터그리드 뷰 질문드려요[1]+1  키모
SMTP 예외처리 관련 파일첨부 윤윤스
응용프로그램 실행시 오류가 납니다.[1]+1  키모
WebBrowser 컨트롤 Zoom 처리[1]  고수도초보부터
Process.Kill 명령어 실행시 오류  비베씨샾
 ★현재글->   데이터베이스의 데이터변동시 알림 질문[1]+1  whoyee
또 초보적인 질문이있습니다[2]  vasdzxc12
초보스러운 질문이 있습니다 ㅜㅜ[1]  vasdzxc12
c# 윈폼에서 마우스 커서를 고정하고 싶습니다.[1]  뭘이
[질문]MDI 자식창 show( ) 시 FormBoardStyle 이 일시적으로 변경되어 보이는 문제[1]  윤구슬
Attribute와 Annotation의 차이[1]  Suspender
DEVEXPRESS 스케쥴러 컨트롤에 대해서 질문이 있습니다.  하품하고파
wpf 디자이너 안보임 문제[2]+1 파일첨부 Tube
윈폼 질문드립니다.[2]+2  키모
C# 엑셀 xlsm 파일 읽기 질문드립니다.[1]  리카이
웹에서 json형태로 넘기고 이값을 받는 방법[1]  민성