PDA

View Full Version : عدم درج داده های تکراری



amir_T_2008
شنبه 04 بهمن 1393, 05:15 صبح
سلام

من میخوام وقتیOptionID برابر یک عددی بود و ip هم برابر یک عددی بود در موقع insert اطلاعات ارور بده که با این شماره OptionID قبلا عدد وارد شده درج شده و از درج جلوگیری کنه کد insert هم قرار میدم که عمل insert انجام میده اما چک نمیکنه که قبلا وجود داره یا نه

ممنون میشم کمک کنید





try
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["ConnectionString1"].ConnectionString);
string strHostName = System.Net.Dns.GetHostName();
string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetVa lue(0).ToString();
SqlCommand cmd = new SqlCommand("INSERT INTO [Polls_Votes] ( [OptionID], [ip]) VALUES (@OptionID, @ip) ", con);

cmd.Parameters.AddWithValue("ip", clientIPAddress);
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();


cmd.Parameters.Add("OptionID", SqlDbType.Int).Value = o;



cmd.ExecuteNonQuery();
con.Close();

lasteror = "رای شما ثبت شد";
}
catch
{
lasteror = "Eroor Post";
}
}

amir_T_2008
شنبه 04 بهمن 1393, 18:50 عصر
از دوستان كسي نمي تونه كمك كنه؟؟؟؟

amir_T_2008
پنج شنبه 09 بهمن 1393, 10:57 صبح
لطفا دوستان كمك كنيد چون بعد اين مدت هنوز نتونستم به جواب برسم
فقط ميخوام تو كد بالا چك كنه اگر گروپ آيدي و آيپي تو يه فيلد ثبت شده بود ارور بده و ثبت نشه

neda555
پنج شنبه 09 بهمن 1393, 13:08 عصر
سلام یک کد select بنویسید با شرط اینکه
OptionID برابر یک عددی و ip هم برابر یک عددی باشد بعد زمان insert ببینید اگر مقدار select شده برابر null بود اجازه insert بدهید در غیر این صورت پیامی نمایش دهید که تکراری است

amir_T_2008
پنج شنبه 09 بهمن 1393, 13:22 عصر
همين ديگه دوست عزيز نتونستم كد سلكتي بنويسم كه با كد بالا مچ بشه و كار بكنه

sajadsobh
پنج شنبه 09 بهمن 1393, 15:30 عصر
کوئری درج رو به این صورت تغییر بده:

IF(SELECT COUNT(*) FROM Polls_Votes WHERE OptionID = @OptionID) = 0
INSERT INTO Polls_Votes (OptionID, ip) VALUES (@OptionID, @ip)
ELSE SELECT 0

بعدش هم می تونی یه شرط بذاری که اگه مقدار برگشتی 0 بود یعنی اینکه داده تکراریه!

amir_T_2008
پنج شنبه 09 بهمن 1393, 18:18 عصر
کوئری درج رو به این صورت تغییر بده:

IF(SELECT COUNT(*) FROM Polls_Votes WHERE OptionID = @OptionID) = 0
INSERT INTO Polls_Votes (OptionID, ip) VALUES (@OptionID, @ip)
ELSE SELECT 0

بعدش هم می تونی یه شرط بذاری که اگه مقدار برگشتی 0 بود یعنی اینکه داده تکراریه!

این کد قرار میدم ارور میده دوست عزیز

sajadsobh
پنج شنبه 09 بهمن 1393, 18:35 عصر
ارور رو بذارین.

sajadsobh
پنج شنبه 09 بهمن 1393, 23:51 عصر
آخه عزیزم کد C# هم اشتباه ست.

amir_T_2008
جمعه 10 بهمن 1393, 03:20 صبح
نه کد c# درست است دوست عزیز

amir_T_2008
جمعه 10 بهمن 1393, 03:57 صبح
دوستان من از کد زیر استفاده کردم اما نظر ثبت نمیشه ، مشکل از کجاست؟؟؟




SqlCommand cmd = new SqlCommand("IF NOT EXISTS(Select * Polls_Votes WHERE (optionID = @OptionID) = 0 ) BEGIN INSERT INTO Polls_Votes (QuestionID, OptionID, ip ) VALUES (@QuestionID, @OptionID, @ip) END", con);



و کد کلی :





SqlCommand cmd = new SqlCommand("IF NOT EXISTS(Select * Polls_Votes WHERE (optionID = @OptionID) = 0 ) BEGIN INSERT INTO Polls_Votes (QuestionID, OptionID, ip ) VALUES (@QuestionID, @OptionID, @ip) END", con);

cmd.Parameters.AddWithValue("ip", clientIPAddress);
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();

cmd.Parameters.Add("QuestionID", SqlDbType.Int).Value = q;
cmd.Parameters.Add("OptionID", SqlDbType.Int).Value = o;
// cmd.Parameters.Add("UserName", SqlDbType.NVarChar).Value = User.Identity.Name;



cmd.ExecuteNonQuery();
con.Close();

lasteror = "رای شما ثبت شد";
}
catch
{
lasteror = "Eroor Post";
}
}

sajadsobh
جمعه 10 بهمن 1393, 09:27 صبح
میشه بگی منظورت از این کدی که نوشتی چیه؟! میخوام بدونم چی میخوای از این کد:

SqlCommand cmd = new SqlCommand("IF NOT EXISTS(Select * Polls_Votes WHERE (optionID = @OptionID) = 0 ) BEGIN INSERT INTO Polls_Votes (QuestionID, OptionID, ip ) VALUES (@QuestionID, @OptionID, @ip) END", con);

amir_T_2008
جمعه 10 بهمن 1393, 11:48 صبح
طبق اموزشي كه بالا دادي. عمل كردم ، من ميخوام بياد ايپي و option id چك بكنه اگر توي جدول قبلا option id برابر 2بود و ايپي طرف موجود بود نذاره ذخيره بشه ولي اگر option id برابر 3 شد اجازه ثبت بشه چون معلومه جواب جديدي براي سوال جديدي مي خواد بده