PDA

View Full Version : مشکل با ذخیره در بانک اکسس؟!!



Open-Source
شنبه 07 شهریور 1388, 14:43 عصر
من برای ذخیره در بانک اکسس از این کد استفاده میکردم که مشکلی هم نداشت و درست کار میکرد:

oc.CommandText = "INSERT INTO tblBuyItem (NKala,Tedad,BahaVahed,BahaKol,BahaForoosh,FactorN O) VALUES ('"
+ dgvKala.Rows[i].Cells[0].Value.ToString() + "','"
+ dgvKala.Rows[i].Cells[1].Value.ToString() + "','"
+ dgvKala.Rows[i].Cells[2].Value.ToString() + "','"
+ dgvKala.Rows[i].Cells[3].Value.ToString() + "','"
+ dgvKala.Rows[i].Cells[4].Value.ToString() + "','"
+ txtFactorNo.Text + "')";


ولی دوستان گفتند در این روش Sql Injection رخ میدهد.


ما اومدیم واز این روش استفاده کردیم:

oc.CommandText = "INSERT INTO tblBuyItem (NKala,Tedad,BahaVahed,BahaKol,BahaForoosh,FactorN O) VALUES (@i1,@i2,@i3,@i4,@i5,@i6)";
oc.Parameters.AddWithValue("@i1", dgvKala.Rows[i].Cells[0].Value.ToString());
oc.Parameters.AddWithValue("@i2", dgvKala.Rows[i].Cells[1].Value.ToString());
oc.Parameters.AddWithValue("@i3", dgvKala.Rows[i].Cells[2].Value.ToString());
oc.Parameters.AddWithValue("@i4", dgvKala.Rows[i].Cells[3].Value.ToString());
oc.Parameters.AddWithValue("@i5", dgvKala.Rows[i].Cells[4].Value.ToString());
oc.Parameters.AddWithValue("@i6", txtFactorNo.Text);


ولی برنامه این error را میدهد.


You cannot add or change a record because a related record is required in table 'tblBuy'.


:متفکر::متفکر::متفکر::متفکر:: تفکر:

Open-Source
شنبه 07 شهریور 1388, 14:47 عصر
راستی من دو جدول با اسم tblBuy و tblBuyItem دارم که با هم ارتباط دارند و فکر میکنم error مربوط به ارتباط آنهاست.

ولی سوال اینجاست که چرا در حالت اول برنامه مشکلی ندارد؟؟؟؟؟؟؟؟!!!!!!!!!!!!!!

saadi2
شنبه 07 شهریور 1388, 16:25 عصر
باید ابتدا در جدول buy مقداری وارد شود که faktorno آن مشخص باشد و بعد در جدول tblbuyitem مقداری را وارد کنید که fakno آن در جدول اول وجود داشته باشد.
و بعد اینکه FactorN O) VALUES

اون فاصله بین fakn و o رو بردار

Open-Source
شنبه 07 شهریور 1388, 17:35 عصر
بین FactorNo اینجا فاصله افتادخ ولی در برنامه ام درسته.

من قبل از ذخیره در جدول tblBuyItem بوسیله این کد جدول tblBuy را ذخیره میکنم.ولی... :افسرده:


oc.CommandText = "INSERT INTO tblBuy (FactorNO,TSodoor,NForooshandeh,TelForooshandeh,Ad Forooshandeh,JKol,Takhfif,JNahai,PNaghdi,PChek) VALUES (@i1,@i2,@i3,@i4,@i5,@i6,@i7,@i8,@i9,@i10)";

oc.Parameters.AddWithValue("@i1", txtFactorNo.Text.Trim());
oc.Parameters.AddWithValue("@i2", txtTSodoorFactor.Text.Trim());
oc.Parameters.AddWithValue("@i3", txtNForooshandeh.Text.Trim());
oc.Parameters.AddWithValue("@i4", txtTelForooshandeh.Text.Trim());
oc.Parameters.AddWithValue("@i5", txtAdForooshandeh.Text.Trim());
oc.Parameters.AddWithValue("@i6", txtJKol.Text.Trim());
oc.Parameters.AddWithValue("@i7", txtTakhfif.Text.Trim());
oc.Parameters.AddWithValue("@i8", txtJNahai.Text.Trim());
oc.Parameters.AddWithValue("@i9", txtBaha.Text.Trim());
oc.Parameters.AddWithValue("@i10", txtChek.Text.Trim());

oc.Connection = null;
oc.Connection = con;

con.Open();
oc.ExecuteNonQuery();
con.Close();



من این برام تعجب داره که وقتی از Parameters استفاده میکنم این مشکل پیش میاد.:متعجب:

Open-Source
شنبه 07 شهریور 1388, 17:46 عصر
اینم عکس Relation از جدول:

saadi2
شنبه 07 شهریور 1388, 19:26 عصر
یه نمونه برات نوشتم

Open-Source
یک شنبه 08 شهریور 1388, 11:49 صبح
دست شما درد نکند مشکل من حل شد.:تشویق:
البته با این:

oc.Parameters.Clear();

فقط مشکل من استفاده نکردن از Parameters.Clear بود.:لبخند: