الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكله في الInsert

مغلق
بدأه زائرة عربية في 31 أكتوبر 2006 · 7 رد · 1,366 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته،

عندي هذا الكود:

	// Connect to a Microsoft Access database using the
	// System.Data.OleDb.OleDbConnection class
string strOleDb;
strOleDb = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
	+ myPath;
OleDbConnection cn = new OleDbConnection(strOleDb);

OleDbCommand myCom = new OleDbCommand();

myCom.CommandText = "Insert Into GAKBInstance (GAKBID, GAID, Value, Annot)"
		+ " values (@gAKBID,@gAID,@word, @annot)";

myCom.Connection = cn;

myCom.Parameters.Add("@gAKBID");
myCom.Parameters.Add("@gAID");
myCom.Parameters.Add("@word");
myCom.Parameters.Add("@annot");

myCom.Parameters[0].Value = 1;
myCom.Parameters[1].Value = 1;
myCom.Parameters[2].Value = 7;
myCom.Parameters[3].Value = 8;

cn.Open();
myCom.ExecuteNonQuery();
cn.Close();

في التنفيذ يطلع لي:

An unhandled exception of type 'System.InvalidCastException' occurred in system.data.dll

Additional information: The OleDbParameterCollection only accepts non-null OleDbParameter type objects, not String objects.

فجربت اكتب الـvalue لكل parameter عند انشاء كل parameter:

myCom.Parameters.Add("@gAKBID", 1);
myCom.Parameters.Add("@gAID", 1);
myCom.Parameters.Add("@word", "testWord");
myCom.Parameters.Add("@annot", "testAnnot");

فصار يطلع لي exception:

An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll

فاين المشكله وكيف الحل

و -waf

#2

بما أنك أنشئت command برمجياً لماذا إسناد البارامترات إليه ؟؟؟

أقصد : يمكنك مباشرة :

myCom.CommandText = "Insert Into GAKBInstance (GAKBID, GAID, Value, Annot)"
		+ " values (1,1,7, 8)";
cn.Open();
myCom.ExecuteNonQuery();
cn.Close();

طبعاً مما لاشك فيه أنك تستطيعين إنشاء متغيرات :

int gAID=1;
int word=55;
int   annot=555;

myCom.CommandText = "Insert Into GAKBInstance (GAKBID, GAID, Value, Annot)"
		+ " values ("+ gAKBID + ","+word+"," +annot+" )";

cn.Open();
myCom.ExecuteNonQuery();
cn.Close();
#3

بسم الله الرحمن الرحيم

السلام عليكم

ذاك الكود كان فقط مثال مبسط.

الذي اريده هو كود يعمل insert يستقبل اربع parameters ويأخذ قيم الـ parameters وسط for loop

لانه سوف يعمل insert اكثر من مره وكل مره قيم الـparameters ستتغير!

الذي عرفته ان استخدامي للرمز '@' غير صحيح، ويجب استخدم الرمز '?' قبل اسم الـparameter

ولكن ما هي الصيغه الصحيحه لعمل هذا الشئ؟

وشكرا و -waf

#4

يمكنك وضع الكود الاخير في الرد السابق بداخل for loop بسهولة جدا

فمثلا يكون الكود هكذا

int gAID=1;
int word=55;
int   annot=555;

for(int i=0;i<MaxValue;i++)
{
gAID=1;	//يمكنك وضع معادلة التغير كما تريدين هنا 	
word=55;	// وهنا
annot=555;  // وهنا

myCom.CommandText = "Insert Into GAKBInstance (GAKBID, GAID, Value, Annot)"
		+ " values ("+ gAKBID + ","+word+"," +annot+" )";
cn.Open();
myCom.ExecuteNonQuery();
cn.Close();
}

ارجو يكون كده صح او ياريت توضحي بالظبط ما تريدين

.

.

#5

بسم الله الرحمن الرحيم

شكرا على المساعده ولكن ما مشي معاي الكود

جربت

			while (i < 3)
			{
				tmpString = "test1";
				tmpAnnot = "test2";

				myCom.CommandText = "Insert Into test (test, testdata, id)"
					+ " values (" + tmpString + ", " + tmpAnnot + ", " + i + ")";

				myCom.ExecuteNonQuery();

				i++;
			}

ولكن كان يطلع لي exception:

An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll

فاين المشكله وكيف الحل؟

و -waf

#6

عندما يكون هناك قيم نصية للحقول فعليك أن تضعي القيم بين ' ' أو " " ... فتصحيح كودك السابق هو :

myCom.CommandText = "Insert Into test (test, testdata, id)"
					+ " values ('" + tmpString + "', " + tmpAnnot + ", " + i + ")";

لا حظي ' ' التي قمت بإضافتها إلى tmpstring ...

#7

بسم الله الرحمن الرحيم

السلام عليكم

الحمدلله! مشي معاي الكود

شكرا لكم حسام فيصل ومحمد القباني

غيرت الصيغه بحيث السترنق يكون داخل '

				myCom.CommandText = "Insert Into test (test, testdata, id)"
					+ " values ('tmpString', 'tmpAnnot', " + i + ")";

جزاكم الله خير و -waf

#8

العفو اخيتي

هذا الموضوع مغلق.

مواضيع مشابهة