PDA

View Full Version : استفاده از query notification



ali_mnkt
شنبه 17 مرداد 1388, 22:21 عصر
سلام به همه

من در مورد query notification یه سری مطلب خوندم اما کدی که می نویسم جواب نمی ده

اگر کسی می تونه کمک کنه ممنون می شم راهنمایی کنه:

خوب من یه sampel نوشتم ولی مشگل داره : برنامه یه فرم خالی است که به sql وصل می شه

و هنگام inser شدن یک ردیف در پایگاه داده پیغام insert رو می ده



namespace query_notification_new
{
public partial class Form1 : Form
{

SqlConnection con2;
SqlCommand com2;
string constr = "server=reza;Integrated Security=SSPI;Database=test;";

public Form1()
{
InitializeComponent();
}


private void Form1_Load(object sender, EventArgs e)
{
con2 = new SqlConnection("server=reza;Integrated Security=SSPI;Database=test;");
com2 = new SqlCommand("SELECT id,name FROM dbo.Customer", con2);
getdata();
}



private void getdata()
{
com2.Notification = null;
com2.CommandText = "SELECT id,name FROM dbo.Customer";

SqlDependency depend = new SqlDependency(com2);
SqlDependency.Start(constr);
depend.OnChange += new OnChangeEventHandler(namayesh);
MessageBox.Show("insert");
}





private void namayesh(object caller, SqlNotificationEventArgs e)
{
ISynchronizeInvoke i = (ISynchronizeInvoke)this;

if (i.InvokeRequired == true)
{
OnChangeEventHandler tempDelegate = new OnChangeEventHandler(namayesh);
object[] args = { caller, e };

i.BeginInvoke(tempDelegate, args);
return;
}

SqlDependency depend = (SqlDependency)caller;
depend.OnChange -= namayesh;

getdata();

}


}
}



مشگلش اینه که وقتی ردیفی در database اضافه می شه هیچ عکس العملی انجام نمی ده


البته کد مربوط به متد namayesh رو از یه سایت گرفتم اگه نباشه برنامه در یک loop بی نهایت

می یوفته البته دقیقا نمی دونم چرا یه آرایه از نوع object گرفته و چه کاری انجام می ده اگر

کسی می دونه یه توضیح واسه اون بده.

ali_mnkt
شنبه 17 مرداد 1388, 22:26 عصر
اینم فایل برنامه

meysam_pro
شنبه 17 مرداد 1388, 22:54 عصر
SQL Broker رو دیتابیس ات فعال کردی؟

ALTER DATABASE databasename SET ENABLE_BROKER

این نیاز به قعال سازی clr هم تو SQL داره:

EXEC sp_configure 'clr enabled' , '1'
go
reconfigure;
go

ali_mnkt
شنبه 17 مرداد 1388, 23:40 عصر
آره دوسب عزیز اون سرویس ها رو هم فعال کردم

آیا تو کد مشگلی وجود داره؟

Developer Programmer
سه شنبه 17 شهریور 1388, 14:26 عصر
SQL Broker رو دیتابیس ات فعال کردی؟

ALTER DATABASE databasename SET ENABLE_BROKERاین نیاز به قعال سازی clr هم تو SQL داره:

EXEC sp_configure 'clr enabled' , '1'
go
reconfigure;
go
عجيبه؛
اين كدي كه شما نوشتين رو من در MSDN هم پيدا كردم و عينا Copy/Paste كردم(SQL Server 2008)
منتها به Enable_Broker و clr_enabled گير ميده كه چنين چيزي نيست! تمام اينترنت رو گشتم هيچ چيزي پيدا نميكنم