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

عمل Attach للبيانات عن طريق السى شارب

بدأه حامد محمد الوصيف في 17 أكتوبر 2013 · 17 رد · 1,309 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

اريد عند بدأ البرنامج فى التنفيذ

 

إذا كانت البيانات موجود على الاس كيو ال يتم البدأ فى البرنامج

 

أما إذا كان البيانات غير موجودة يقوم بفتح نافذة OpenFileDialog واقوم بإختيار قاعدة البيانات من الجهاز ثم يحدث عملية Attach

 

ثم يعود البرنامج للعمل

 

 

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

13598125002.gif

038c8ecfa8.gif

#2

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


 


أرجو التوضيح ما هو المطلوب بالضبط 


 


أرجو التوضيح و إن شاء الله  سيتم المساعدة 


 


إن الله فى عون العبد ما دام العبد فى عون اخيه  

#3
arafat_system كتب:

 

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

 

أرجو التوضيح ما هو المطلوب بالضبط 

 

أرجو التوضيح و إن شاء الله  سيتم المساعدة 

 

إن الله فى عون العبد ما دام العبد فى عون اخيه  

 

بإختصار بسيط

 

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

 

أعمله عن طريق البرنامج اللى بصممه بالسى شارب

 

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

 

اما لو البيانات غير موجودة على الاس كيو ال يفتح لى OpenFileDialog اختار مكان البيانات على الجهاز واضغط open ويتم عمل Attach

 

ياريت يكون الموضوع واضح ان

 

وربنا يجعلنا عونا لبعض

13598125002.gif

038c8ecfa8.gif

#4

try this code

private void butAttach_Click(object sender, EventArgs e)
{
SqlConnection conDB = new SqlConnection(@"Data Source=.;Initial Catalog=master;Integrated Security=True;";);
try
{
	//Open Master Database
	if (conDB.State == ConnectionState.Closed)
		conDB.Open();           

	SqlCommand com = new SqlCommand("select count(*) from sys.databases WHERE name='your DB'", conDB);
	if (((int)com.ExecuteScalar()) == 0)
	{
		if (openBackupDialog.ShowDialog() == DialogResult.OK)
		{
			txtFileName.Text = openBackupDialog.FileName;
			DriveInfo oDrive = new DriveInfo(txtFileName.Text.Substring(0, 1).ToString());
			if (oDrive.DriveType != DriveType.Fixed)
				MessageBox.Show("Copy the Backup File To Local Hard Disk", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Stop);
			else
			{
				//ATTACH DB
				com.CommandText ="CREATE DATABASE [your DB] ON ( FILENAME = N'" + txtFileName.Text.ToString() + "' ) FOR ATTACH"
				com.ExecuteNonQuery();
			}
		}
	}
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
finally
{
    conDB.Close();
}
1
#5

يوجد مكتبة مفتوحة المصدر تحوي نافذة الاتصال

http://archive.msdn.microsoft.com/Connection/Release/ProjectReleases.aspx?ReleaseId=3863

 

 

وهذا مثال أيضا

 

http://www.codeproject.com/Articles/21186/SQL-Connection-Dialog

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#6

وهناك مثال لها في المنتدى فقط قم بعمل بحث

||***************************************************||


 ||بسم الله الذي لا يعلو على اسمه شيء في الارض ولا في السماء وهو العلي العظيم ||


||***************************************************||


 ||                             اللهم إن لم يكن بك غضب علي فلا ابالي                       ||


||***************************************************||


في المنتديات العلمية استخدام التقييم rep_up.png  rep_down.png  يرفع من قيمة الموضوع واهمية الرد

#7
KARIMSOFT كتب:

 

try this code

private void butAttach_Click(object sender, EventArgs e)
{
SqlConnection conDB = new SqlConnection(@"Data Source=.;Initial Catalog=master;Integrated Security=True;";);
try
{
	//Open Master Database
	if (conDB.State == ConnectionState.Closed)
		conDB.Open();           

	SqlCommand com = new SqlCommand("select count(*) from sys.databases WHERE name='your DB'", conDB);
	if (((int)com.ExecuteScalar()) == 0)
	{
		if (openBackupDialog.ShowDialog() == DialogResult.OK)
		{
			txtFileName.Text = openBackupDialog.FileName;
			DriveInfo oDrive = new DriveInfo(txtFileName.Text.Substring(0, 1).ToString());
			if (oDrive.DriveType != DriveType.Fixed)
				MessageBox.Show("Copy the Backup File To Local Hard Disk", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Stop);
			else
			{
				//ATTACH DB
				com.CommandText ="CREATE DATABASE [your DB] ON ( FILENAME = N'" + txtFileName.Text.ToString() + "' ) FOR ATTACH"
				com.ExecuteNonQuery();
			}
		}
	}
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
finally
{
    conDB.Close();
}

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

الكود هو

SqlConnection conDB = new SqlConnection(@"Data Source=.;Initial Catalog=master;Integrated Security=True;");
                 try
                {
	               //Open Master Database
	               if (conDB.State == ConnectionState.Closed)
	            	conDB.Open();           

	               SqlCommand com = new SqlCommand("select count(*) from sys.databases WHERE name='your DB'", conDB);
	               if (((int)com.ExecuteScalar()) == 0)
	                  {
		                  if (openFileDialog1.ShowDialog() == DialogResult.OK)
		                        {
			                      textBox1.Text = openFileDialog1.FileName;
                                  DriveInfo oDrive = new DriveInfo(textBox1.Text.Substring(0, 1).ToString());
			                      if (oDrive.DriveType != DriveType.Fixed)
				                   MessageBox.Show("Copy the Backup File To Local Hard Disk", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                                 
			                       else
			                        {
				                         //ATTACH DB
                                        com.CommandText = "CREATE DATABASE [elwesif] ON ( FILENAME = N'" + textBox1.Text.ToString() + "' ) FOR ATTACH";
			                    	    com.ExecuteNonQuery();
			                        }
		                         }
	                    }
                 }
              catch (Exception ex)
                  {
                    MessageBox.Show(ex.Message);
                   }
                  finally
                    {
                       conDB.Close();
                    }

13598125002.gif

038c8ecfa8.gif

#8
أبو أحمد المبرمج كتب:

يوجد مكتبة مفتوحة المصدر تحوي نافذة الاتصال

http://archive.msdn.microsoft.com/Connection/Release/ProjectReleases.aspx?ReleaseId=3863

 

 

وهذا مثال أيضا

 

http://www.codeproject.com/Articles/21186/SQL-Connection-Dialog

 

 

http://www.codeproject.com/Articles/21186/SQL-Connection-Dialog

 

المثال ده هو اللى انا محتاجة بالظبط ولكن فيجوال بيسيك وانا استخدم السى شارب

 

بعد تحميل ظهر لى اخطاء عند الفتح والفوم ظهرت فارغة

 

ولكن هذا هو المطلوب بالضبط

13598125002.gif

038c8ecfa8.gif

#9
using System.IO;

for

DriveInfo
#10
KARIMSOFT كتب:
using System.IO;

for

DriveInfo

 

عند الضغط على الزر بيعطى رسالة بها  sys.databases

 

ياريت توضيح للسطر ده

SqlCommand com = new SqlCommand("select count(*) from sys.databases WHERE name='your DB'", conDB);

هل حعدل فيه شئ

 

جزاك الله خيرا

13598125002.gif

038c8ecfa8.gif

#11

السطر يقول :

إختر من قواعد البيانات عدد قواعد البيانات التي تحمل الاسم your db طبعا لازم تغير كلمة your db الى اسم قاعدة البيانات لديك

||***************************************************||


 ||بسم الله الذي لا يعلو على اسمه شيء في الارض ولا في السماء وهو العلي العظيم ||


||***************************************************||


 ||                             اللهم إن لم يكن بك غضب علي فلا ابالي                       ||


||***************************************************||


في المنتديات العلمية استخدام التقييم rep_up.png  rep_down.png  يرفع من قيمة الموضوع واهمية الرد

#12

كما قال اخي eiado غير your db الي اسم قاعدة بياناتك

#13

السلام عليكم

 

عدلت اسم قاعدة البيانات ولكن ظهرت لى الرسالة الموجودة فى المرفقات

 

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

 

وشكرا لكم جميعا

Attach Database.rar

post-133160-0-54199300-1382311599.jpg

13598125002.gif

038c8ecfa8.gif

#14

مشكلتك حسب ما كتبت هو :

                SqlCommand com = new SqlCommand("select count(*) WHERE name='Pharmacy'", conDB);

السطر لازم يكون :

SqlCommand com = new SqlCommand("select count(*) from sys.databases WHERE name='Pharmacy'", conDB);

||***************************************************||


 ||بسم الله الذي لا يعلو على اسمه شيء في الارض ولا في السماء وهو العلي العظيم ||


||***************************************************||


 ||                             اللهم إن لم يكن بك غضب علي فلا ابالي                       ||


||***************************************************||


في المنتديات العلمية استخدام التقييم rep_up.png  rep_down.png  يرفع من قيمة الموضوع واهمية الرد

#15
eiado كتب:

 

مشكلتك حسب ما كتبت هو :

                SqlCommand com = new SqlCommand("select count(*) WHERE name='Pharmacy'", conDB);

السطر لازم يكون :

SqlCommand com = new SqlCommand("select count(*) from sys.databases WHERE name='Pharmacy'", conDB);

شكرا جزيلا اشتغل الحمد لله

 

بس فيه استفسار ممكن يتعدل عليه بحيث محددشى اسم قاعدة بيانات بمعنى انه يكون برنامج عام اى قاعدة بيانات اختارها يقوم بعمل attach  لها

 

شكرا جزيلا

13598125002.gif

038c8ecfa8.gif

#16

بالتأكيد بعمل فورم لقواعد البيانات الأمثلة التي فوق كلها يمكن أن تعتمد عليها في عمل هذا الفورم مع text box و OpenFileDialoge

تم تعديل هذه المشاركة بواسطة eiado في 22 أكتوبر 2013 في 17:27

||***************************************************||


 ||بسم الله الذي لا يعلو على اسمه شيء في الارض ولا في السماء وهو العلي العظيم ||


||***************************************************||


 ||                             اللهم إن لم يكن بك غضب علي فلا ابالي                       ||


||***************************************************||


في المنتديات العلمية استخدام التقييم rep_up.png  rep_down.png  يرفع من قيمة الموضوع واهمية الرد

#17
eiado كتب:

بالتأكيد بعمل فورم لقواعد البيانات الأمثلة التي فوق كلها يمكن أن تعتمد عليها في عمل هذا الفورم مع text box و OpenFileDialoge

 

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

13598125002.gif

038c8ecfa8.gif

#18

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

اراكم كتبتم نص الاتصال بقاعدة البيانات هكذا   sqlconnection = new SqlConnection(@"Data Source =.;Database=HR_DB;integrated security=true");

وانا اكتبه  sqlconnection = new SqlConnection(@"server=.\;Database=HR_DB;integrated security=true");
ويشتغل مع ايضا في الحقيقة الطريقتان تعمل لكن ايهما اصح وهل هناك فرق فيهما يوثر في عمل البرنامج في جهاز العميل مثلا ؟

وَقُلْ رَبِّي زِدْنِي عِلْماً

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…