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

مشكلتي في Dbconn.open();

بدأه lamasat في 20 مايو 2009 · 24 رد · 1,716 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

:blush: اعلم انني اثقلت عليكم باسئلتي ..

لكن ليس لنا احد الا الله

ثم انتم ..

ولم يبقى على تسليم المشروع الا اسابيع قليله معدوده ..

///

نحن عملنا في بداية المشروع على جهاز واحد ولم نتعرض لمشاكل السيرفرات الا الآن

حيث احتجنا الى تقسيم العمل لانجازه بسرعه ..

عند نقلنا للمشروع من جهاز الى آخر ..

واجهتنا هذه المشكله ...

JannatAlhusain-2b594dd8d2.jpg

JannatAlhusain-2f855c33f1.jpg

مع العلم انها تعمل علىSQL 2005 ولا تعمل على SQL express

ونحن معظم اجهزتنا ستكون اكسبرس ..

بانتظار ردكم على المشكله ،،

ولكم جزيل الشكر مقدما ..

#2

السلام عليكم:

الخطأ انه عندما تم نقل الموقع الى جهاز أخر فأنه يجب تغيير نص الاتصال بقاعدة البيانات حسب الجهاز الثاني واسمه .

رَبِّ أَوْزِعْنِي أَنْ أَشْكُرَ نِعْمَتَكَ الَّتِي أَنْعَمْتَ عَلَيَّ وَعَلَى وَالِدَيَّ وَأَنْ أَعْمَلَ صَالِحًا تَرْضَاهُ وَأَدْخِلْنِي بِرَحْمَتِكَ فِي عِبَادِكَ الصَّالِحِينَ

تلاوات خاشعة مؤثرة

#3

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

شكرا جزيلا لك اختي ..

لكن حتى مع تغيير اسم السيرفر .. تظل المشكله قائمه ..

ارجوا حلا آخر ..

ونحن نتوقع ان المشكله في نسخ الاكسبريس ..

لكن لا نعلم طريقة اصلاحها ..

#4

اعتقد ان المشكله فى sqlexpress

ولازم نظبط ال configuration

وده حلها

http://start-coding.blogspot.com/2007/11/m...for-ms-sql.html

أُحبُّ الصَّالِحِينَ وَلسْتُ مِنْهُمْ ××× لَعَلِّي أنْ أنَالَ بهمْ شَفَاعَهْ

وَأكْرَهُ مَنْ تِجَارَتُهُ المَعَاصِي ××× وَلَوْ كُنَّا سَواءً في البضَاعهْ

#5

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

شكرا لك اخي الكريم

لكن قمت بتطبيقها .. يظهر لدي خطأ بانه لا يتعرف على السيرفر ..

اذا كان رقم ip لدي هو 111.111.1.111

وكان رقم المنفذ هو 1790

ماذا سيكون اسم السيرفر ..!

لاني اتبعت الخطوات الموجوده في الموقع .. ولا يزال لا يتعرف على الجمله الموجوده في المشكله مسبقا ..

بانتظار ردكم ..

موفقين جميعا ..

تم تعديل هذه المشاركة بواسطة lamasat في 20 مايو 2009 في 21:20

#6

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

بعد وضع قاعدة البيانات داخل فولدر App_Data

نقوم بإضافة صفحة جديدة

نضع عليها أداة sqlDataSource ومن الـ Configuration الخاص بها قومي بالاتصال بقاعدة البيانات

واختيار جدول ...الخ

بعدها افتحي ملف الـ web.Config ستجدي أنه قام بعمل كونكشن جديد يمكن نسخه والعمل به

ولكن سيلزم فقط التعديل على مسار ملف قاعدة البيانات ليكون كالتالي:

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|ASPNETDB.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True

مع ملاحظة أن اسم قاعدة البيانات هنا هو ASPNETDB.MDF

----------

يفضل وضع الـ Connection String داخل ملف الكونفيج وتشفيره لزيادة الأمان

تمنياتي بالتوفيق

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#7

اخي انا حصلت معي هذه المشكلة من قبل فقمت بالتالي

datasource= your - dba\\sqlexpress

فيتحل المشكل و قرات كتاب عن c# 2008 فكانت هناك طريقة انك تضع @ امام المسار

datasource= your - dba\sqlexpress"@ لكن ننزع \ و نتركها عادي

ارجو ان يكون هذا الحل

#8

يوجد خطا في ConnectionString كما هو واضح في الصورة

المشكلة في الرمز / الموجود في تعريف الاتصال وبالتحديد قبل كلمة SQLEXPRESS .

فاتوقع ان اللغة المستخدمة هي C#

فم باضافة الرمز مرة اخرى / لكي يصبح اثنان في نفس تعريف الاتصال وبالتحديد قبل كلمة

SQLEXPRESS ليكون اثنان وليس واحد

جرب الامر ربما يكون الخطأ منها .

#9

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

me.mando

لقد قمت بتجريب الحل الذي ادليت به مشكورا لكن بدون فائده ..

لا يتعرف على الجمله كاملة في الجلوبال..

شكرا جزيلا لك على المساعده

الاخوين moh4algeriaprog و ماكسيموس

قمت بتجريب الطريقة التي ذكرتماها ..

ذهب خطأ الاكسبرس ..

JannatAlhusain-6cf292849f.jpg

لكن لا زال لا يستطيع تطبيق open(); ..

اتوقع ان الحل في طريقة الاخ deepfreeze.

لكنني لم افهمها جيدا .. او بالاصح لم اعرف كيف اقوم بتطبيقها ..

ارجوا ممن لديه خبره .. ان يفيدني

شكرا جزيلا لكل من حاول مساعدتي ..

في انتظاركم ،،

#10

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

أستاذة لمسات

لم أقل لك أن تضعيه في الجلوبال ولكن ذكرت أن جملة الكونكشن ستكون موجودة داخل ملف الكونفيج

والكونكشن لا يتم فتحه في الجلوبال وإنما يتم فتحه وقت الحاجة إليه فقط.

على كل حال ممكن ترفقي قاعدة البيانات وملف الكونفيج وصفحة واحدة وسأقوم بالتعديل عليها حتى تعمل إن شاء الله

بالتوفيق

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#11

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

وعليكم السلام اخي الكريم ..

شكرا جزيلا لك ..

نحن نريد ان تكون الداتا بيس دائما مفتوحه لدينا ..

ولا نحتاج في كل مره الى فتحها واغلاقها عند كل عمليه في كل صفحه ..

لان موقعنا معتمد على الداتا بيس في كافة صفحاته ..

لذلك وضعنا الفتح مباشره في الجلوبال ..

فهل هناك حل لمشكلة الاوبن فيه ..

شكرا جزيلا للمساعده ،،

#12

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

عفوا هذا الكلام غير مفيد وسيقوم بعمل Overhead على السيرفر دون فائدة

يجب معرفة أن الـ Connection من الأشياء الهامة والتي تستهلك الكثير من موارد السيرفر لذلك يجب التعامل معه بحرص

يجب أن نعلم أن في الـ ADO هناك ما يسمى بالـ Connection Pooling وهو الذي يحتفظ بالكونكشن لإعادة استخدامه بدل من إنشاؤه من جديد في كل مرة.

لذلك فإن أفضل طريقة هي فتح الكونكشن وقت الحاجة إليه فقط ثم إغلاقه مباشرة بعد الإستخدام حتى لو تمت هذه العملية في كل الصفحات أو حتى في صفحة واحدة لأكثر من مرة.

هذا سيساعد كثيرا في إتمام العملية بشكل أسرع ويرفع من الـ Performance للبرنامج.

الرابط التالي لزيادة المعلومات:

http://weblogs.asp.net/bleroy/archive/2005/04/03/396916.aspx

وإليك هذا المثال وفيه معالجة لمشكلة الـ Connectio String

وفيه مثال بسيط على استخدام الطريقة التي ينصح بها في التعامل مع وقت فتح الكونكشن وإغلاقه.

التحميل من هنا...

http://rapidshare.com/files/235550499/WebSite1.rar.html

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#13

اخي اضن انو الحل ينقص هنا user id فقد قمت بعمل عنوان للاتصال انظر

Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Data Source=sqlexpress

اضف user id و شوف

#14

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

Mr.Mando

وعليكم السلام اخي الكريم

بالنسبه لمشكلتي الآن ليست في الاوبن كبرمجه .. لانها تعمل على جهاز محمل فيه SQL 2005 بشكل سليم ..

لكن حين نفتحها على اجهزتنا والتي بها SQL Express يظهر الخطأ الذي ادرجته في بداية الموضوع .. فقط

هذا كود لبرمجة داله معينه داخل الموقع .. [التعليقات] هي الطريقة التي ذكرتها انت والتي استغنينا عنها بفتح الداله في الجلوبال..

 

public void creataccount()
	{
		//string d1=DropDownList5.SelectedValue + "/" + DropDownList3.SelectedValue + "/" + DropDownList6.SelectedValue;
		try
		{
			insertSql = "insert into [contracting commission]([commission name],nickname,[commission employment number],[passport number],[web password],[confi password],[membership start date],[membership end date],email,Gender,[college name])values(@commission_name,@nickname,@commission_numb,@passport_number,@web_password,@
web_confipassword,@memb_s_date,@memb_e_date,@ema,@gender,@coll_name)";

			//SqlConnection conn = new SqlConnection();
			//conn.ConnectionString = "Data Source=.;Initial Catalog=project;Integrated Security=True";
			SqlCommand cmd = new SqlCommand();
			//cmd.Connection = conn;
			cmd.Connection = (SqlConnection)Session["MyDB"];

			cmd.CommandType = CommandType.Text;
			cmd.CommandText = insertSql;

			cmd.Parameters.AddWithValue("@commission_name", UserName.Text);
			cmd.Parameters.AddWithValue("@nickname", nickname.Text);
			cmd.Parameters.AddWithValue("@commission_numb", id_fon.Text);

			cmd.Parameters.AddWithValue("@passport_number", TextBox1.Text);

			cmd.Parameters.AddWithValue("@web_password", Password.Text);
			cmd.Parameters.AddWithValue("@web_confipassword", ConfirmPassword.Text);
			cmd.Parameters.AddWithValue("@gender", DropDownList1.SelectedItem.Value);
			cmd.Parameters.AddWithValue("@coll_name", DropDownList2.SelectedItem.Value);
			cmd.Parameters.AddWithValue("@memb_s_date", DropDownList3.SelectedItem.Value);
			cmd.Parameters.AddWithValue("@memb_e_date", DropDownList4.SelectedItem.Value);
			cmd.Parameters.AddWithValue("@ema", Email.Text);


		   // conn.Open();
			cmd.ExecuteNonQuery();

			//conn.Close();
			MessageBox.Show("تمت الاضافة بنجاح في جدول لجنة التعاقد");
		}
		catch
		{
			MessageBox.Show("حدث خطأ اثناء الاضافة الى جدول بيانات لجنة التعاقد");
		  }
	}

وهذا الجلوبال ..

 

<%@ Application Language="C#" %> 
<%@ Import Namespace=System.Data.SqlClient%>


<script runat="server">
	//SqlConnection conn = new SqlConnection();
	//conn.ConnectionString ="Data Source=.;Initial Catalog=project;Integrated Security=True";
	void Application_Start(object sender, EventArgs e) 
	{
		// Code that runs on application startup

	//conn.Open();

	}

	void Application_End(object sender, EventArgs e) 
	{
		//  Code that runs on application shutdown
		//conn.Close(); 
	}

	void Application_Error(object sender, EventArgs e) 
	{ 
		// Code that runs when an unhandled error occurs

	}

	void Session_Start(object sender, EventArgs e) 
	{
			  // Code that runs when a new session is started
		SqlConnection dbconn;

		dbconn = new SqlConnection("Data Source=.;Initial Catalog=project;Integrated Security=True");
		dbconn.Open();
		Session["MyDB"] = dbconn;


	}

}

	void Session_End(object sender, EventArgs e) 
	{
		// Code that runs when a session ends. 
		// Note: The Session_End event is raised only when the sessionstate mode
		// is set to InProc in the Web.config file. If session mode is set to StateServer 
		// or SQLServer, the event is not raised.


		//if (Session["MyDB"].state = Session["MyDB"].ConnectionState.Open)
		//{
		 //   Session["MyDB"].Close();
		//}


	}

</script>

انا فقط اريد حل للتعامل مع نسخ express

شكرا جزيلا لك على المساعده ..

موفق ..

:::

moh4algeriaprog

شكرا جزيلا لك .. لكن نحن ليس لدينا woner

بالتووفيق ..

تم تعديل هذه المشاركة بواسطة lamasat في 21 مايو 2009 في 15:43

#15

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

أختنا الفاضلة الكود بهذه الطريقة يصعب تتبعه فرجاء ارفاق صفحة واحدة من المشروع وملف الجلوبال والكونفيج فقط

لاحظت أنك تقومين باستخدام الـ Session في الاتصال

يجب معرفة أن الـ Session لا تستمر مدى الحياة وإنما تنتهي بعد وقت معين من التوقف عن استخدامها

على سبيل المثال:

لو قم المستخدم بفتح صفحة لاضافة سجل جديد ثم ترك الجهاز لفترة كافية ثم عاد ليقوم بالاضافة فلن تتم العملية لأن الـ Session ستكون قد انتهت وبالتالي لن يكون هناك اتصال بقاعدة البيانات

بالطبع لا يمكنك ملاحظة ذلك أثناء العمل لأنك تقومين بالتجربة وبالتالي دائما هناك تفاعل مع الصفحة.

أما بخصوص الأسباب التي ذكرتها عن فتح الاتصال وقت الحاجة اليه فقط فهذا ما أراه صحيحا وما يقوله من هم أكثر مني علما ولك مطلق الحرية في كتابة برنامجك بالطريقة التي تفضلينها.

الآن حتى تنتهي مشكلتك بسرعة يرجى ارفاق الملفات حتى يمكن للأعضاء مساعدتك وحل المشكلة.

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#16

عفوا قمت بتحديث الاكواد

نظرا لتوفر ملايييين النسخ ..

لم اضع الكود الصحيح في البداية

#17

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

اخي الكريم

سأقوم بعد قليل بارفاق نسخه مصغره من الويب ..

لكن نحن استخدمنا الفتح العادي قبل هذه الطريقه ..

ونفس الخطأ كان يظهر لدينا ..

عند open();

وكما اخبرتك ..

في الجهاز الذي عليه SQL 2005 يعمل بشكل سليم ..

بينما في اجهزتنا SQL Express يظهر خطأ الاوبن ..

JannatAlhusain-2b594dd8d2.jpg

لك جزيل الشكر ،،

#18

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

هنا صفحه مصغره مع الداتا بيس

انوه انه يعمل على SQL 2005 ولكن لا يعمل على SQL Express

وهذه هي مشكلتنا الآن ..

http://rapidshare.com/files/235596519/WebSite25.rar.html

ارجوا ممن لديه الحل ان يفيدنا به سريعا ومشكورا ..

#19

هل المشروع على نفس الجهاز الذي توجد به قاعدة البيانات

#20

جرب الكود التالي

مع العلم انه اذا كان المشروع على نفس الجهاز فقم بكتابة localhost كقيمة لـData Source

واذا غير ذلك فقم بكتابة مزود الخدمة للقاعدة . مع العلم ان القاعدة لدي لها اسم مستخدم وكلمة مرور

 string _ConnectionString =  "Data Source=localhost;Initial Catalog=project;Persist Security Info=True;User ID=sm;Password=!th*ir%;max pool size=5000;min pool size=1";
		SqlConnection myConnection = new SqlConnection(_ConnectionString);
		SqlCommand myCommand = new SqlCommand("INSERT INTO [dbo].[brigadier]([Col_1],[Col_2],[Col_3],[Col_4]) VALUES (@Val_1,@Val_2,@Val_3,@Val_4)", myConnection);
		myCommand.CommandType = CommandType.Text;

		myCommand.Parameters.Add(new SqlParameter("@@Val_1", TextBox1.Text);
		myCommand.Parameters.Add(new SqlParameter("@@Val_2", TextBox2.Text);
		myCommand.Parameters.Add(new SqlParameter("@@Val_3", TextBox3.Text);
		myCommand.Parameters.Add(new SqlParameter("@@Val_4", TextBox4.Text);


	try 
	{
		if (myConnection.State != ConnectionState.Open)
		 myConnection.Open();

		int i = myCommand.ExecuteNonQuery();
		myConnection.Close();
		Response.Write("تمت اضافة البيانات");
		}
		catch (Exception ex)
		{
		Response.Write(ex.ToString());
		}

تم تعديل هذه المشاركة بواسطة ماكسيموس في 21 مايو 2009 في 18:43

#21

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

شكرا جزيلا لكم ..

قمت بتجريبها ..

لكن دون جدوى :( ،،

ارجوا مزيدا من التوضيح ..

او حلا آخر

تم تعديل هذه المشاركة بواسطة lamasat في 21 مايو 2009 في 21:08

#22

السلام عليكم

المشكلة ان الsqlexpress by default not support remote connection

فلازم نعمل الconfiguration بتاعته يعنى نعمل enable tcp/ip باستخدام Surface Area Configuration Utility

وبكل بساطه دى الطريقة

http://www.datamasker.com/SSE2005_SAC.htm

بعد كده نحط رقم الip والport

http://www.datamasker.com/SSE2005_SCM1.htm

وبعد كده نعمل configuration للbrowser علشان يعمل enable sqlexpress remote connection

http://www.datamasker.com/SSE2005_SCM2.htm

وعلى السيرفر نتاكد من firwall exception بالنسبه للسيكول والbrowser من

start-run-Firewall.cpl

وبعد كده نعمل restart for server

وان شاء الله تشتغل :D

تم تعديل هذه المشاركة بواسطة deepfreeze في 21 مايو 2009 في 22:22

أُحبُّ الصَّالِحِينَ وَلسْتُ مِنْهُمْ ××× لَعَلِّي أنْ أنَالَ بهمْ شَفَاعَهْ

وَأكْرَهُ مَنْ تِجَارَتُهُ المَعَاصِي ××× وَلَوْ كُنَّا سَواءً في البضَاعهْ

#23

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

أختي الفاضلة كما ذكرت أن المشكلة هي في الـ Connection String

تم التعديل عليه والمشروع الآن يعمل دون مشاكل

http://rapidshare.com/files/235706247/WebSite25.rar.html

رجاء تجربته على جهازك وأخبرينا بالنتيجة

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#24

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

deepfreeze

الطريقة التي ذكرتها هي أول محاولاتي .. لكنها لم تكن مجديه ..

شكرا جزيلا لك على المساعده ..

-----

Mr.Mando

:lol:

اشتقت أن ارى الصفحات واقوم بتجريبها على جهازي ..

تـــــم حل المشكله من قبلكم ..

شكرا جزيلا جزيلا لك ..

وأخيرا تم حل المشكلة..

خالص الشكر والتقدير لك اخي الكريم

بالتوفيق لك .. ولن ننساكم من دعاءنا ..

أحسنتــ ,.

#25

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

يمكن أن تجربوا هذا الكود

SqlConnection myConnection = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Image_test.mdf;Integrated Security=True;User Instance=True;Timeout=30;");

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