PDA

View Full Version : مشکل با درج اطلاعات تکراری؟؟؟؟



sajadcg
سه شنبه 13 دی 1390, 10:11 صبح
سلام.
من در برنامه که نوشتم که با database sql کار می کنه.
می خواستم ببنیم قبل از عمل درج در بانک چطور میشه چک کرد که این اطلاعات قبلا درج شده یا نه؟؟؟؟
لطفا دستورات را کامل بنویسید.

اینم یک عکس از محیط برنامه:

pooria_googooli
سه شنبه 13 دی 1390, 10:32 صبح
قبل از اینکه اطلاعات را درج کنی این کد را بذار :
objDataAdapter2 = new SqlDataAdapter("select * from list where fname = N'" + txtYSfname.Text.ToString() + "%' and lname = N'" +txtNSlname.Text.ToString() + "%' and goroh = N'" + comboBox1.Text.ToString() + "%' ", objconnection2);
DataTable dt1 = new DataTable();
objDataAdapter2.Fill(dt1);
if (dt1.Rows.Count > 0)
{
MessageBox.Show(" خطا ! اطلاعات وارد شده تکراری است لطفا دوباره سعي كنيد. ");
txtYSfname.Focus();
return;

}

sajadcg
سه شنبه 13 دی 1390, 11:50 صبح
قبل از اینکه اطلاعات را درج کنی این کد را بذار :
objDataAdapter2 = new SqlDataAdapter("select * from list where fname = N'" + txtYSfname.Text.ToString() + "%' and lname = N'" +txtNSlname.Text.ToString() + "%' and goroh = N'" + comboBox1.Text.ToString() + "%' ", objconnection2);
DataTable dt1 = new DataTable();
objDataAdapter2.Fill(dt1);
if (dt1.Rows.Count > 0)
{
MessageBox.Show(" خطا ! اطلاعات وارد شده تکراری است لطفا دوباره سعي كنيد. ");
txtYSfname.Focus();
return;

}

مرسی.اگه میشه همین دستورات را به روش linq to sql بزارید ممنون میشم.

zarrinnegar
سه شنبه 13 دی 1390, 14:42 عصر
var lq= new dataclasses1DataContext();
var dt=lq.lists.where(c=>c.fname == txtYSfname.text).count();
if (dt>0)
{
messagebox.show("اطلاعات وارد شده تکراری است");
txtYSfname.Focus();
}

sh.eng
سه شنبه 13 دی 1390, 15:17 عصر
می خواستم ببنیم قبل از عمل درج در بانک چطور میشه چک کرد که این اطلاعات قبلا درج شده یا نه؟؟؟؟


سلام.
اگر هدفتون اینه که به کاربر اعلام کنید داده ای که وارد کرده تکراریه. خب حتما شما یک فیلد رو تویه دیتابیستون بعنوان کلید اصلی معرفی کردید. مثلا شماره کالا. خب وقتی شما اطلاعات را برای sql ارسال می کنید خود sql قبل از ثبت اطلاعات چک میکنه که اطلاعات (کلید اصلی) تکراری نباشه.
به نظر من نیاز نیست شما دوباره این کار را در برنامه انجام بدید. البته در صورتی که بانک اطلاعاتی و فایل exe برنامه هر دو در یک محیط باشه.
ببینید دوست من، شما مثلا میتونید از کد زیر استفاده کنید:


try
{
//دستورات ارسال اطلاعات
}
catch (SqlException ex)
{
if (ex.Number.ToString() == "2627")
throw new Exception("اطلاعات وارد شده، در سیستم موجود میباشند");
}