السلام عليكم ورحمة الله وبركاته
عندى قاعدة بيانات فيها جدولين جدول الطلاب وجدول الفصول
الجدول الطلاب عباره عن ( stud_id pk ,stud_first_name_stud_second_name,telephone,sex,birthday,adrees,class_id.........)
وجدول الفصول (class_id pk,class_name,year_id)
مربوطين مع بعض عملت فورمه عشان ادخل بيانات طالب جديد ولكن به خطاء ارجو من الاخوه انهم يقولولى ايه هو الخطاء
private void addbtn_Click(object sender, System.EventArgs e)
{
SqlCommand stud_idCommand=mySqlConnection.CreateCommand();
stud_idCommand.CommandText="select max(stud_id) from student";
SqlDataReader idDataReader=stud_idCommand.ExecuteReader();
if (idDataReader.Read()){count_stud_id=Int32.Parse(idDataReader[0].ToString());}
idDataReader.Close();
TextBox [] textboxes ={txtname , txtadress , txtseconedname};
string box="";
for (int i=0;i<=textboxes.Length-1;i++)
{
if (textboxes.Text==""){
box+=" "+textboxes.Tag.ToString();}
}
ComboBox [] cmbboxes={cmbclass, cmbbirthday , cmbbirthyear};
string comb="";
for(int i=0;i<=cmbboxes.Length-1;i++){
if (cmbboxes.Text==""){
comb+=" "+cmbboxes.Tag.ToString();}
}
string result=box+""+comb;
if (result!=""){MessageBox.Show("برجاء ادخال "+result);}
else
{
SqlCommand selectClass_id=mySqlConnection.CreateCommand();
selectClass_id.CommandText="execute class_id @class_name";
selectClass_id.Parameters.Add("@class_name",SqlDbType.NVarChar,20);
selectClass_id.Parameters["@class_name"].Value=cmbclass.Text;
SqlDataReader class_idReader=selectClass_id.ExecuteReader();
if(class_idReader.Read()){class_id=class_idReader[0].ToString();}
label10.Text=class_id;
class_idReader.Close();
SqlCommand insertCommand=mySqlConnection.CreateCommand();
insertCommand.CommandText="select stud_first_name,stud_second_name,"+
"birthday,adress,telephone,sex,class_id,religion from student";
SqlDataAdapter myDataAdapter=new SqlDataAdapter();
myDataAdapter.SelectCommand=insertCommand;
DataSet myDataSet=new DataSet();
try
{
int colum_id= myDataAdapter.Fill(myDataSet,"student");
label10.Text=colum_id.ToString();
DataTable myDataTable=myDataSet.Tables["student"];
DataRow myNewRow=myDataTable.NewRow();
label10.Text=myNewRow.RowState.ToString();
DataColumn myDataColumn=myDataSet.Tables["student"].Columns["stud_id"];
/*myDataTable.PrimaryKey=new DataColumn []{
myDataColumn};
myDataColumn.AllowDBNull=false;
myDataColumn.AutoIncrement=true;
myDataColumn.AutoIncrementSeed=-1;
myDataColumn.AutoIncrementStep=-1;*/
myNewRow["stud_first_name"]=txtname.Text;
myNewRow["stud_second_name"]=txtseconedname.Text;
switch (cmbbirthmonth.Text)
{
case "يناير":month="1"; break;
case "فبراير":month="2"; break;
case "مارس":month="3"; break;
case "ابريل":month="4"; break;
case "مايو":month="5"; break;
case "يونيو":month="6"; break;
case "يوليو":month="7"; break;
case "اغسطس":month="8"; break;
case "سبتمبر":month="9"; break;
case "اكتوبر":month="10"; break;
case "نوفمبر":month="11"; break;
case "ديسمبر":month="12"; break;
}
string birthday;DateTime birth_day;
birthday=cmbbirthday.Text+"/"+month+"/"+cmbbirthyear.Text;
birth_day=DateTime.Parse(birthday);
myNewRow["birthday"]=birth_day;
myNewRow["adress"]=txtadress.Text;
if(txtphone.Text!="")
{
myNewRow["telephone"]=txtphone.Text;
}
else {myNewRow["telephone"]="";}
myNewRow["sex"]=cmbsex.Text;
myNewRow["religion"]=cmbreligion.Text;
myNewRow["class_id"]=class_id;
myDataTable.Rows.Add(myNewRow);
label10.Text=myNewRow.RowState.ToString();
int numOfRows=myDataAdapter.Update(myDataSet,"student");
}
catch (SqlException ex1)
{
SqlErrorCollection erData=ex1.Errors;
for(int i=0;i<erData.Count;i++)
{
MessageBox.Show("errors "+i+" :"+
erData.Number+", "+
erData.Class+" ,"+
erData.Message);
}
}
catch (Exception ex2)
{
MessageBox.Show(ex2.Message);
}
}
}
وعاوز استفسار كمان لو انا عاوز ادخل stud_id
فى جمله select
ازاى اعرف قيمتها الى هاتخدها مع العلم انها فى قاعده البيانات autoincrement
وكل ماعرفها فى الكود يظهر خطأء ان فيه تكرار فى العمود studi_id
واكون شاكر لو حد رد عليا
انا رافع الصوره بتاع رساله الخطاء