آخرین فرصت تا %60 تخفیف خرید یکجای دوره ها برای 6 نفر فقط تا
00 00 00
+9****+31

داده تکراری در دیتابیس

سلام

من میخوام داخل سایتم هر کسی یک بار در نظر سنجی شرکت کنه

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

ممنون میشم منو راهنمایی کنید

 

این سوال 1 پاسخ دارد.
لذت یادگیری با توسینسو
به عنوان شخصی که مدت هاست از سایت توسینسو استفاده می کنم باید بگم که واقعاً یکی از بهترین مرجع ها برای ارتقاء دانش شخصی هست. دوره های سایت، راهکارها و مطالب، همگی عالی هستند.
علی آقامیری

در جدول پاسخ نظرسنجی ، کد کاربر رو ثبت کنید ، زمان ثبت پاسخ چک کنید که قبلا این کاربر پاسخ داده یا نه.

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

** هیچ اگر سایه پذیرد ، منم آن سایه هیچ **
منال مجموعه

می تونین ایندکس تعریف کنید و Isunique=true کنید تا از تکرار جلوگیری کنی

  • انتخاب شده به عنوان جواب توسط 1 نفر
+9****+31

میشه بیشتر راهنمایی کنید ایندکس تعریف میکنم از تکرار جلوگیری میکنه اما به کاربر چجوری بگم کد وارد شده تکراریه ممنون

علی آقامیری

 اول  یه کوئری بزنید و ببینید قبلا شرکت کرده یا نه ، اگر بله بهش پیغام بدید و کار ادامه پیدا نکنه. 

** هیچ اگر سایه پذیرد ، منم آن سایه هیچ **
+9****+31

میشه لطفا نمونه کوئری رو برام بنویسید

چجوری تو سی شارپ فراخوانیش کنم

علی آقامیری

خدا خیرتون بده !  سوال رو یه جور بنویسید که آدم متوجه بشه ، چی لازم دارید و چه مقدار می دونید.

شما می گید یه نظرسنجی دارم ، آدم فکر می کنه به اون قسمت و پیش نیازهاش تسلط دارید ...

نمونه کوئری یه چیزی شبیه این میشه :

select * from pollresult  where userId='001' & pollID='002'

تو این کوئری من در نظر گرفتم که شما ممکنه چند تا نظرسنجی داشته باشید و ID اون نظرسنجی خاص رو بررسی کنید...

در مورد فراخوانی دستورات sql در c#  بهتره به آموزشهای سایت مراجعه کنید ، تو چند خط نمی گنجه.

** هیچ اگر سایه پذیرد ، منم آن سایه هیچ **
+9****+31

من خیلی بد سوال پرسیدم ببخشید

این سایت نام و نام خانوادگی و کدپرسنلی را به عنوان ورودی از کاربر میگیرد

وباید بررسی کند هر کد پرسنلی یک بار در نظرسنجی شرکت کند من کد پرسنلی را کلید اصلی قرار دادم

و برای آن ایندکس معرفی کردم که یونیک باشد

اما نتونستم به کاربر بگم که "شما قبلا در نظر سنجی شرکت کرده اید"

امیدوارم منظورمو رسونده باشم

 

علی آقامیری

مشکل اصلی شما تو کوئری های ساده است ، باید روی select کار کنید.

شبیه چیزی که من نوشتم ، ببینید نتایج رو کجا دارید ذخیره می کنید بهش یه ستون ID کاربر باید بدید ، 

قبل از ذخیره نتیایج یه select بزنید ببینید اونجا چیزی با این نام کاربری ذخیره شده یا نه.

** هیچ اگر سایه پذیرد ، منم آن سایه هیچ **
منال مجموعه

شماره پرسنلی کاربر رو به عنوان پارامتر بفرست و یه Flagاز نوع bit تعریف کن. کویری رو اینطور بنویس:

 

create PROCEDURE dbo.[Get_ChecknazarsanjiByPersonID]
@PersonID bigint,
@Flag bit output
AS
BEGIN
    declare @IsRepeat int
    select @IsRepeat=PersonID from nazarsanji where PersonID=@PersonID
    if(@IsRepeat is not null)
    begin
     set @Flag=1
    end
    else
    begin
      set @Flag=0
    end
    
    select @Flag
    
END

 

توی کد C#براساسFlag به کاربر پیام نمایش بدین

 

 

منال مجموعه

شماره پرسنلی کاربر رو به عنوان پارامتر بفرست و یه Flagاز نوع bit تعریف کن. کویری رو اینطور بنویس:

 

create PROCEDURE dbo.[Get_ChecknazarsanjiByPersonID]
@PersonID bigint,
@Flag bit output
AS
BEGIN
    declare @IsRepeat int
    select @IsRepeat=PersonID from nazarsanji where PersonID=@PersonID
    if(@IsRepeat is not null)
    begin
     set @Flag=1
    end
    else
    begin
      set @Flag=0
    end
    
    select @Flag
    
END

 

توی کد C#براساسFlag به کاربر پیام نمایش بدین

 

 

پاسخ شما
برای ارسال پاسخ خود وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر