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 شد اجازه ثبت بشه چون معلومه جواب جديدي براي سوال جديدي مي خواد بده
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.