PDA

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



mohandesee
سه شنبه 26 دی 1391, 16:41 عصر
سلام دوستان

چطور میتونم کنترل کنم که اگر رکورد تکراری درج کرد بهش پیغام بده که قبلا درج شده؟؟؟

ممنون میشم با استفاده ازکد C#توضیح بدید .....

Session["mission"] = txtmission.Text;
Session["goal"] = txtgoal.Text;
SqlDataAdapter da = new SqlDataAdapter ("select mission,goal from tbl_mission",cn);
string str = string.Empty;
DataSet ds = new DataSet();
da.Fill(ds, "table");
int j = 1;
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
str += ds.Tables[0].Rows[i]["mission"];
str += ds.Tables[0].Rows[i]["goal"];

j++;
}
if(str==txtmission.Text&&str==txtgoal.Text)
{
Response.Write("<script>alert(' مورد مشابه وجود دارد!! ');</script>");
}
else
{
SqlCommand cmd = new SqlCommand("insert into tbl_mission(mission,goal,regdate) values(N'" + txtmission.Text + "',N'" + txtgoal.Text + "','" + regdate + "');" +
"select id from tbl_mission", cn);


cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
Response.Write("<script>alert('ثبت اطلاعات با موفقیت انجام شد');</script>");
}
} این دستور عمل نمیکنه

karimi84
سه شنبه 26 دی 1391, 16:47 عصر
چرا سمت دیتابیس چک نمی کنید

mohandesee
سه شنبه 26 دی 1391, 16:54 عصر
چرا سمت دیتابیس چک نمی کنید

چون میخام پیغام بده بدم من سمت دیتابسس یاد ندارم!!!:)

malloc
سه شنبه 26 دی 1391, 18:14 عصر
خوب اگه بخوای سمت دیتابیس چک کنی (که بنظر من خوب نیست) که خوب بحثش جداست . اما اگه بخوای سمت سرور چک کنی خوب اون مقداری و که نمیخوای تکراری ثبت بشه (مثل Username) رو ازش یه سلکت بگیر . اگه رکوردی وجود داشت خطا بده والا ثبت کن.

fahmari
سه شنبه 26 دی 1391, 18:27 عصر
چرا از Stored Procedure استفاده نمی کنید؟
در این صورت می تونید توی SP قبل از insert کردن از کد زیر برای عدم درج رکود تکراری استفاده کنید :

if not exists (select * from Tabel where ....)
insert ....

malloc
سه شنبه 26 دی 1391, 18:36 عصر
راست میگه اصلا حواسم به تابع not exist نبود . تو میتونی از این تابع استفاده کنی و براساس شرایط اینکه الان وجود داره یا نداره یه عددی و به خروجی بدی و سمت سرور چک کنی اگه عدد 0 بود یعنی ثبت نکرده و خطا بده و الا ثبت کرده .

mohandesee
سه شنبه 26 دی 1391, 22:49 عصر
بابا کدC#رو میخام نه تو دیتابیس.اینجوری حل شد......
SqlCommand cm = new SqlCommand("SELECT count(*) FROM tbl_strategy where title=N'" + txtstr.Text + "'", cn);
cn.Open();
string m = Convert.ToString(cm.ExecuteScalar());
if (m == "0")
{فبلادرج شده}