PDA

View Full Version : سوال: مشکل با ثبت برای بار دوم در یک دیتابیس



nasime_shomal
جمعه 09 بهمن 1388, 16:06 عصر
سلام به همه دوستان. من توی اجرای کدم با یه ارور روبرو میشم. توی این کد یه سه تا تکست باکس دارم برای ورود نام، ایمیل و پیغام. یه دیتا گرید داریم با یه linqdatasource حالا مشکل اینجاست که وقتی برای بار اول داده میدم خوب کار میکنه ولی میخوام واسه سری دوم این کار رو بکنم این ارور رو میده Violation of PRIMARY KEY constraint 'PK_Message'. Cannot insert duplicate key in object 'dbo.Message'.
The statement has been terminated.
کد من هم اینه

protected void submitButton_Click(object sender, EventArgs e)
{
Dictionary<string, string> parameters = new Dictionary<string, string>();

parameters.Add("Data",DateTime.Now.ToShortDateString());
parameters.Add("Name",nameTextBox.Text);
parameters.Add("Email",emailTextBox.Text);
parameters.Add("MessageText",messageTextBox.Text);

LinqDataSource1.Insert(parameters);
ClearButton_Click(sender,e);
messagesGradview.DataBind();
}
میشه بگین ایراد کار از کجا میتونه باشه. در ضمن من تازه کارم لطف کنید به زبان ساده توضیح بدید

meysampaknahad
جمعه 09 بهمن 1388, 16:14 عصر
سلام
این ارور به این موضوع مربوط میشه که شما میخاید داده ای رو در جدولتون وارد کنید که قبلاً یک بار وارد شده و به عنوان کلید مورد استفاده قرار گرفته می شه.
در واقع این ارور می گه که نمی تونید در فیلد کلید دو مقدار یکسان داشته باشید.
برای رفعش هم کافیه داده ی جدیدی که وارد می کنید مقدار جدیدی رو به عنوان کلید داشته باشه.

nasime_shomal
جمعه 09 بهمن 1388, 17:14 عصر
از جوابتون ممنونم. من یه ستون به اسم messageID دارم و اونو توی دیتاگرید حذف کردم یعنی فقط توی جدول دیتابیس منه چطور میتونم تنظیمش کنم که هر دفعه یه شماره بهش اضافه بشه تا دیگه به این مشکل بر نخورم؟
من الان کلا messageID رو حذف کردم ولی بازم مشکلم پا برجاست.
ارور دقیقا توی این خط میاد:
LinqDataSource1.Insert(parameters);

clover
جمعه 09 بهمن 1388, 18:11 عصر
هر دفعه یه شماره بهش اضافه بشه تا دیگه به این مشکل بر نخورم؟
خاصیت identity این ستون را فعال کنید.

nasime_shomal
جمعه 09 بهمن 1388, 18:22 عصر
خاصیت identity این ستون را فعال کنید.
میشه بیشتر توضیح بدید. بگید چطور؟

iman_22a
جمعه 09 بهمن 1388, 18:43 عصر
میشه بیشتر توضیح بدید. بگید چطور؟

سلام . شما باید از طریق Server Explorer یا Sql Server Management Studio یا هر طریقی که راحت تر به دیتابیستون دسترسی دارید ، جدولتون رو ویرایش کرده و برای ستون موردنظر خاصیت Identity را True کنید .

nasime_shomal
جمعه 09 بهمن 1388, 19:08 عصر
سلام . شما باید از طریق Server Explorer یا Sql Server Management Studio یا هر طریقی که راحت تر به دیتابیستون دسترسی دارید ، جدولتون رو ویرایش کرده و برای ستون موردنظر خاصیت Identity را True کنید .
ممنونم دوست عزیز من همونجور که گفتم مبتدی هستم. دیتا بیسم رو با sqlexpress نوشتم. گزینه Identity ندیدم یه گزینه با این نام مال خود جدول است که اونو با messageID تنظیم کردم ویه گزینه با ین نام برای خود messeageID هست که اونم بله رو انتخاب کردم. ولی هنوز مشکلم سر جاشه. نمیدونم شاید مشکل از یه جای دیگه باشه.

nasime_shomal
جمعه 09 بهمن 1388, 22:30 عصر
دوستان ممنون مشکل حل شد همونی که شما گفتید بود مشکل سر primary key بود که حل شد. ممنونم