2011-12-28 19 views
0

新しい行がdatabase.iに追加されたときに通知メッセージをポップアップできるアプリケーションを作成しようとしましたが、mysqlを使用してデフォルトエンジンをcsvエンジンに変更してFileSystemWatcherファイルシステムウォッチャーは行が削除されるたびにトリガされますが、新しい行がデータベースに追加されたときに変更イベントをトリガしないという問題があります。また、行が削除されると「変更日」は変更されますが新しい行を追加すると、その行は更新されません。私を助けてください。FileSystemWatcherが正しく変更を検出していない

private void button1_Click(object sender, EventArgs e) 
{ 
    FileSystemWatcher fsw = new FileSystemWatcher(); 
    fsw.Path = "C:\\xampp\\mysql\\data\\doubts\\"; 
    fsw.EnableRaisingEvents = true; 
    fsw.Changed += new FileSystemEventHandler(func); 
} 

private void func(Object obj,FileSystemEventArgs e) 
{ 
    notifyIcon1.Icon = SystemIcons.Application; 
    notifyIcon1.BalloonTipText = 
     "Addition of new row to the database detected..."; 
    notifyIcon1.ShowBalloonTip(4000); 
} 
+0

コードを投稿することはできますか? –

+0

ディスク上のファイルが実際に変更されたことを確認できますか?たぶん、MySQLはまだ変更をフラッシュしていません。 –

+3

ファイルシステムのイベントを監視して、データベース内の変更を検出しようとしています。これは本当に良いアプローチではありません。あなたが苦労していることはそれを強調していると思います。 – Yuck

答えて

1

変更されたレコードを定期的に確認するために、データベースを定期的にポーリングすることをお勧めします。

クエリが高価な場合は、別のテーブルに挿入してそのテーブルをポーリングするAFTER INSERTまたはAFTER UPDATEトリガを作成できます。 How to do this from a stored procedureKILL QUERY commandを経由して、この選択を殺しトリガーを作成し、アプリケーションから

SELECT "WaitForChanges", SLEEP(999); 

のようなコマンドを実行します。これはまだ十分ではない場合

は、あなたがこれを行うことができます。

関連する問題