PDA

View Full Version : حرفه ای: نا معتبر دانستن اطلاعات داخل دیتا ست و بروز شدن خودکار دوباره



arefba
دوشنبه 25 مرداد 1389, 15:05 عصر
بسمه تعالی
باسلام
من در فروم اس کیو ال سوال کردم که :

کدی هست که توی اس کیو ال سرور بنویسی و وقتی که یه فیلد جدید پر شد یه چیزی رو برای اون نرم افزاری که به این بانک وصل شده بفرسته ؟؟؟

سپس دوستی این جواب رو دادن :

در ASP.NET در خصوص بحث Caching شما مي تونيد Database Dependency تعريف کنيد، به اين ترتيب که وقتي توي ديتابيس تغييري رخ مي ده، اطلاعاتي که سمت ASP.NET کش شده به طور خودکار نامعتبر بشه و از کش حذف بشه. لذا در درخواست بعدي، ASP.NET به طور خودکار مجدداً اطلاعات رو از ديتابيس مي گيره و کش رو به روز مي کنه.

اين لينک رو ببينيد:

http://www.ASP.NET/data-access/tutor...ependencies-vb (http://www.asp.net/data-access/tutorials/using-sql-cache-dependencies-vb)

http://msdn.microsoft.com/en-us/magazine/cc188758.aspx

حالا می خوام بدونم راهی دیگه هست و اگه این راه خوبه چطور تو سی شارپ این کار رو انجام بدم
ممنون از لطفتون

mahdi87_gh
دوشنبه 25 مرداد 1389, 15:47 عصر
دوست عزیز یک روش هم میتونه این باشه که شما یک property با نوع بولین برای فرم در نظر بگیر که نشون میده آیا تغیری در بانک رخ داده یا نه و اونو در هر عملیات درج و حذف و آپدیت برابر true کن.حالا برای اینکه پس از هر تغییر اطلاعات بروز بشه، در قسمت set مربوط به اون property بررسی کن اگر مقدار true بود متد مربوط برای لود و بایند اطلاعاتت رو فراخوانی کن و در نهایت دوباره اون رو false کن

#aliyari_C
دوشنبه 25 مرداد 1389, 17:10 عصر
سلام
این دستور SQL قرار یک مقدار برگردونه (یعنی اگر مقدار بود 1 و اگر نبود 0 را برگردان)


ALTER PROCEDURE validlogin
@uname nchar(30),
@pass nchar(100),
@valid int OUTPUT

AS
IF EXISTS(SELECT * FROM Users WHERE User_name = @uname AND Password = @pass)
SET @valid = 1
ELSE
SET @valid = 0
RETURN @valid
خوب حال C#‎‎ چگونه باید مقدار برگشت را بگیرد , این کار به وسیله تابع ExecuteScalar قابل اجرا است


private bool UserAuthenticate(string uname, string pass)
{
int validateresult;
string hashedpwd = EncodePassword(pass);
//query the username and password
sqlSelectCommand1.CommandType = CommandType.StoredProcedure;
sqlSelectCommand1.CommandText = "validlogin";
sqlSelectCommand1.Parameters.Add(new SqlParameter("@uname", SqlDbType.NChar, 30));
sqlSelectCommand1.Parameters["@uname"].Value = uname;
sqlSelectCommand1.Parameters.Add(new SqlParameter("@pass", SqlDbType.NChar, 30));
sqlSelectCommand1.Parameters["@pass"].Value = hashedpwd; //hashedpwd;
sqlSelectCommand1.Parameters.Add(new SqlParameter("@valid", SqlDbType.NChar, 30));
sqlSelectCommand1.Parameters["@valid"].Direction = ParameterDirection.Output;
//sqlDataAdapter1.SelectCommand = sqlSelectCommand1;
sqlConnection1.Open();

validateresult = Convert.ToInt32(sqlSelectCommand1.ExecuteScalar()) ;
sqlConnection1.Close();

if (validateresult > 0)
{
return true;
}
else
{
return false;
}
}
این فقط تنها راهی بود که بلد بودم تا با SQL فعل و انفعال داشت

موفق باشی
__________________________________________________ __________________________________________________
چون به دریا می توانی راه یافت
سوی یک قطره چرا باید شتافـت

نتایج آماری,مقایسه ای بین String و StringBuildr (http://www.barnamenevis.org/forum/showthread.php?t=233987)