PDA

View Full Version : آموزش: آموزش اجرای فایلهای با پسوند sql در سی شارپ



ali.bahrami
یک شنبه 01 بهمن 1391, 13:50 عصر
دوستان شاید تا به حال برای شما هم پیش اومده باشه که بخواید درون برنامه تون فایلهای sql را اجرا کنید. مثلا میخواهید دیتابیس را روی سیستم کاربر بسازید یا یک رویه ذخیره شده را به دیتا بیس اضافه کنید و .... شما میتونید خیلی راحت دستورات را درون خود sql management تایپ کرده و در قالب یک فایل با پسوند sql ذخیره می کنید.
حال می رسیم به نحوه اجرای این فایلها از دورن نرم افزار ....
خوب ابتدا باید ریفرنس های زیر را به برنامه تون اضافه کنید.
Microsoft.SqlServer.smo
Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Management.Sdk.Sfc
نگران نباشید اگر این کلاس ها را ندارید می تونید در انتها از همین تاپیک دانلود کنید. ( در اخر ضمیمه می کنم.)
سپس در ابتدای برنامه دستورات زیر را اضافه کنید.
using Microsoft.SqlServer.Management.Smo
using Microsoft.SqlServer.Management.Common
دوستان تا اینجا را داشته باشید تا در پست بعدی ادامه مطلب را براتون توضیح بدم.
فایلهای dll را براتون میزارم تا در صورتی که کسی این dll ها را نداشت بتونه استفاده کنه.

ali.bahrami
یک شنبه 01 بهمن 1391, 14:02 عصر
دوستان در ادامه مطلب قبل .... یک نمونه کد میزارم از روی همون توضیح میدم.


string ScriptDirectory = Application.StartupPath + "\\sql";
string StrCon = @"Data Source=.\SQLEXPRESS;Initial Catalog=master;Integrated Security=true";
DirectoryInfo Dir = new DirectoryInfo(ScriptDirectory);
FileInfo[] SqlScript = Dir.GetFiles("*.sql");
foreach (FileInfo Fi in SqlScript)
{
FileInfo file = new FileInfo(Fi.FullName);
string Script = file.OpenText().ReadToEnd();
SqlConnection Con = new SqlConnection(StrCon);
Server server = new Server(new ServerConnection(Con));
server.ConnectionContext.ExecuteNonQuery(Script);
}
MessageBox.Show("All of Script Execute Successfuly");


خوب دوستان در خط اول یک متغیر رشته ای میسازیم و مسیر فولدری که فایلهای sql داخل اون هست را بهش میدیم.
خط دوم هم رشته اتصال به بانک هست.
دو خط بعد هم فایلهای موجود درون فولدر را (فقط آنهایی که پسوند sql دارند.) را پیدا کرده و درون آرایه ای از نوع فایل اینفو میریزد.
خطوط بعدی هم که حلقه ای است برای بدست آوردن تک تک فایلها ...
ولی مهمترین نکته در اینجا ساخت شی از روی کلاس Server هست که کار اجرای Script را برای ما انجام میده.
اخرین خط حلقه هم مقادیر رشته ای که از فایل sql خوانده شده و درون متغیر Script ریختیم را اجرا میکند.

دوستان یک نمونه کد میزارم که با اجرای اون یک دیتابیس به نام DB_Test را برامون می سازه. فایل sql ان درون فولدر sql داخل پوشه debug هست.

malakootian
پنج شنبه 02 خرداد 1392, 19:22 عصر
سلام
ممنون از این آموزشتون اما من یک مشکلی دارم فالیهای DLL را که گذاشتید من در کنار برنامه خودم گذاشتم و اجرا کردم همه چیز درست بود اما وقتی به روی سیستم user دیگری بردم فالیها را نمی شناخت و برنامه متوقف می شد ظاهرا این فایلها باید در سیستم کاربر رجیستر بشوند تا کار کنند چطوری اینکار را انجام بدم
ممنون

fakhravari
پنج شنبه 02 خرداد 1392, 20:18 عصر
چه کاربرد های دیگری داره!
مثلا میتونه دستور insert/update/delete بده؟

aliasghar2
پنج شنبه 02 خرداد 1392, 23:01 عصر
مطلب فوق العاده خوب و در عین سادگی خیلی می تونه پرکاربرد باشه دست شما درد نکنه


چه کاربرد های دیگری داره!
مثلا میتونه دستور insert/update/delete بده؟
خب معلومه که می تونه فایل SQL شامل دستورات SQL حالا می خواد هر چیزی باشه چه فرقی می کنه

ali.bahrami
جمعه 03 خرداد 1392, 00:08 صبح
سلام
ممنون از این آموزشتون اما من یک مشکلی دارم فالیهای DLL را که گذاشتید من در کنار برنامه خودم گذاشتم و اجرا کردم همه چیز درست بود اما وقتی به روی سیستم user دیگری بردم فالیها را نمی شناخت و برنامه متوقف می شد ظاهرا این فایلها باید در سیستم کاربر رجیستر بشوند تا کار کنند چطوری اینکار را انجام بدم
ممنون

نه دوست عزیز نیاز به رجیستر نداره خطایی را که میده بزار

ali.bahrami
جمعه 03 خرداد 1392, 00:11 صبح
چه کاربرد های دیگری داره!
مثلا میتونه دستور insert/update/delete بده؟

خیلی کابرد میتونه داشته باشه مثلا شما یه پراسیجر نوشتی که میخوای به دیتابیس اضافه کنی (روی سیستم مشتری) خوب خیلی راحت میشه اونو اجرا کرد در کل تمام فایل هایی که با پسوند sql باشند را میشه اجرا کرد. که خوب طبیعتا اینجور فایلها شامل دستورات sql هستند (insert , delete , ....)

fakhravari
جمعه 03 خرداد 1392, 11:20 صبح
منظورم این نیست.
شما به file.read میتونستید .sql بخونید این همه dll دیگه لازم نیست. و بدین به sql comand و ...
منظورم اینه که خود این dll ها میتونند .sql درج و ویرایش و حذف تولید کنند

ali.bahrami
جمعه 03 خرداد 1392, 16:26 عصر
با file.read میشه خوند ولی با SqlCommand نمیشه اطلاعاتی را که خوندید را اجرا کنید

fakhravari
جمعه 03 خرداد 1392, 16:31 عصر
با file.read میشه خوند ولی با SqlCommand نمیشه اطلاعاتی را که خوندید را اجرا کنید
شوخی میکنید!:چشمک:

programmernet
یک شنبه 20 مهر 1393, 08:52 صبح
دوستان من با خطای زیر مواجه میشم واسه چیه ؟ چی میگه124470

programmernet
یک شنبه 20 مهر 1393, 11:11 صبح
کسی نیست جواب بده ؟

mz6488
یک شنبه 20 مهر 1393, 11:14 صبح
والا ما که دستورات رو از تکست میخونیم به صورت کامند میفرستیم به sql.دیگه نیازی به این همه dll نیست که.حالا می خواد ساخت جدول،پروسیجر یا هر چیز دیگه ای باشه

programmernet
یک شنبه 20 مهر 1393, 11:19 صبح
والا ما که دستورات رو از تکست میخونیم به صورت کامند میفرستیم به sql.دیگه نیازی به این همه dll نیست که.حالا می خواد ساخت جدول،پروسیجر یا هر چیز دیگه ای باشه


دوست عزیز میشه بگید چطور باید این کار را انجام داد .

خودتون از چه روشی استفاده می کنید ؟

mz6488
یک شنبه 20 مهر 1393, 12:50 عصر
دوست عزیز میشه بگید چطور باید این کار را انجام داد .

خودتون از چه روشی استفاده می کنید ؟

فایل تکست رو میذارم تو resource بعد موقع خوندن مستقیم میریزمش تو یه استرینگ بعد استرینگ رو پاس میدم به sqlCommand بعدش تموم

davidrobert
دوشنبه 21 مهر 1393, 09:04 صبح
دستت درد نکونه آقا ali.bahrami (http://barnamenevis.org/member.php?138690-ali-bahrami) من خیلی وقت بود دنبال همچین کدی بودم آخر سر جواب گرفتم و برای برنامه ام استفاده کردم و قشنگ جواب داد.