PDA

View Full Version : سوال: خطای PRIMARY KEY هنگام درج اطلاعات



vB.N3T
سه شنبه 14 آذر 1391, 21:41 عصر
دوستان فیلد id که تو جدول کلید اصلی انتخاب شده
حالا تو فرم درج اگه 2 تا ایدی مثل هم باشه خطایی

Violation of PRIMARY KEY constraint 'PK_tbl_insert'. Cannot insert duplicate key in object 'dbo.tbl_insert'.
The statement has been terminated.

میده بعنی دو تا ایدی نمیتونه تکراری باشه
تو سی شارپ چطوری باید چک کنم که اگر مقدار ایدی وارد شده تو جدول هست مدیریت کنیم خطاشو

lahiji
سه شنبه 14 آذر 1391, 21:52 عصر
سلام

راه زیاد داره !

یکیش اینه:


SqlConnection strcon = new SqlConnection("Data Source=.;Initial Catalog=dbper;Integrated Security=True");
string comstring = @"SELECT * FROM Personal where IdCard='" + textBox1.Text + "'";

conn = new SqlConnection(strcon);
conn.Open();

SqlCommand cmd = new SqlCommand(comstring, conn);
string find = Convert.ToString(cmd.ExecuteScalar());


if (find == "")
{

دستورات

}
else
{

MessageBox.Show(" کد ملی " + textBox1.Text + " وجود دارد ", "هشدار", MessageBoxButtons.OK, MessageBoxIcon.Stop);
textBox1.Text = "";
}

vB.N3T
سه شنبه 14 آذر 1391, 23:04 عصر
به این شکل نوشتم
این تابع تو کلاسمه

public string docommand(string docom)
{
com1.CommandText = docom;
com1.ExecuteNonQuery();
string find = Convert.ToString(com1.ExecuteScalar());
return find;
}

کد های فرم

ShopClass sc = new ShopClass();
sc.connect();

string selectid = "select * from tbl_insert where id='" + textBox1.Text + "'";
sc.docommand(selectid);
sc.select(selectid);
dataGridView1.DataSource = sc.select(selectid);
string s = sc.docommand(selectid);

if (s == "")
{
string qury =
"insert into tbl_insert (id,name,gheymat,tedad,tarikh,tozihat)";
qury += "values({0} , '{1}' , {2} ,{3} , '{4}' , '{5}')";
qury = string.Format(qury, textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, maskedTextBox1.Text, richTextBox1.Text);

sc.docommand(qury);
MessageBox.Show("اطلاعات با موفقیت وارد شدند");
//sc.dc();
}
else
MessageBox.Show(" ایدی " + textBox1.Text + " وجود دارد ", "هشدار", MessageBoxButtons.OK, MessageBoxIcon.Stop);

textBox1.Text = "";



}



حالا اگه ایدی تکراری باشه وارد نمیشه و خطا میده که ایدی وجود داره

اما اگر ایدی تو جدول وجود نداشته باشه این خطا رو میده

Violation of PRIMARY KEY constraint 'PK_tbl_insert'. Cannot insert duplicate key in object 'dbo.tbl_insert'.
The statement has been terminated.

vB.N3T
چهارشنبه 15 آذر 1391, 00:16 صبح
ممنون درست شد یه دو تا تابع جدا نوشتم

فقط ممنون میشم این خط رو توضیح بدید

string find = Convert.ToString(com1.ExecuteScalar());

ali_habibi1384
چهارشنبه 15 آذر 1391, 07:31 صبح
ممنون درست شد یه دو تا تابع جدا نوشتم

فقط ممنون میشم این خط رو توضیح بدید

string find = Convert.ToString(com1.ExecuteScalar());
دستور خروجي كه بصورت scaler (تك مقداري) از sql برميگرده رو به رشته تبديل ميشه و در متغير find قرار ميگيره.