PDA

View Full Version : اجرای اسکریپت های sql در سی شارپ(ایجاد، بروزرسانی و حذف دیتابیس، جدول ها و ...)



programmernet
شنبه 19 مهر 1393, 12:53 عصر
سلام به همه

دوستان من از جدول خودم با استفاده از sql managemant اسکریپت تهیه کردم

حالا می خوام این اسکریپت را در محیط دات نت 2008 اجرا کنم چطوری باید این کار را انجام بدم

یا مثلا از بانک اطلاعاتیم و کلیه جداولش اسکریپت تهییه کردم باشم

لطفا راهنماییم کنید

اسماعیل ابراهیمی
شنبه 19 مهر 1393, 13:12 عصر
انگار کم جستجو کردین

خدمت شما

لیـــــــنک (http://msdn.microsoft.com/en-us/library/yea4bc1b(vs.80).aspx)

programmernet
یک شنبه 20 مهر 1393, 11:13 صبح
من که نتیجه ای نگرفتم . دوست عزیز یک نمونه کد اگرداری واسم بزار . ممنون می شم

veniz2008
یک شنبه 20 مهر 1393, 12:57 عصر
سلام.
در محیط ویژوال استودیو رفرنس های زیر رو اضافه کنید :
برای اضافه کردن یک Reference بر روی پوشه Reference پروژتون کلیک راست کنید و از گزینه Add Reference استفاده کنید اگر در پنجره Add Reference بصورت پیش فرض ظاهر نشدن از قسمت جستجوی پنجره، چند کلمه از رفرنس ها رو تایپ کنید تا نمایش داده بشن و بعد اقدام به انتخاب اونها کنید :

Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Smo
Microsoft.SqlServer.Management.Sdk.Sfc

حالا در بالای فرمتون، فضای نام های زیر رو اضافه کنید :

using System.IO;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;

در کد زیر فرض بر این هست که فایل script درون همان درایوی هست که برنامه شما(فایل exe از اونجا اجرا میشه (مهم نیست فایل script کنار فایل exe باشه یا نه، مهم اینه فایل exe و فایل script درون یک درایو باشن). این حالتی که میگم فایل اسکریپ و فایل exe درون یک درایو باشه برای حالتی هست که setup درست میکنید و میدید دست مشتری وگرنه برای تست کردن مجبور نیستید اینطوری باشه و فقط کافیه آدرس فایل اسکریپت رو در کد زیر جایگزین کنید.

SqlConnection con = new SqlConnection("server = .\\sqlexpress;database = master;integrated security = true");
FileInfo file = new FileInfo(string.Format("{0}:\\script.sql",System.IO.Directory.GetCurrentDirectory().Substri ng(0,1))) ;
string script = file.OpenText().ReadToEnd();
file.OpenText().Close();
Server myserver = new Server(new ServerConnection(con));
myserver.ConnectionContext.ExecuteNonQuery(script) ;
MessageBox.Show("اسکریپت با موفقیت اجرا شد");

نکته مهم : اگر با خطای Mixed Mode assembly is built aginst … مواجه شدید، درون فایل app.config برید و تگ شروع statrtup رو بصورت زیر تغییر بدید :

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

اسماعیل ابراهیمی
یک شنبه 20 مهر 1393, 12:58 عصر
نمونه کد من به درد کار شما نمی خوره عزیز (و البته پروژه ی این موردی ندارم)

شما باید روش کار رو درست پیش ببرید که از طریق همون لینک توضیح داده شده

ji ming u
چهارشنبه 06 آبان 1394, 20:35 عصر
سلام
من یک مبتدی هستم:لبخند::لبخند::لبخند::لب ند:
میخام با زدن یک کلیک رو باتن اگه جدول مورد نظر نباشه انو ایجاد کنه
و همچنین اگه در صورت وجود جدول ببینه فیلد های مورد نظر هست یا نه در یر اینصورن فیلد جدید را اضافه کنه.

xman_dj
پنج شنبه 07 آبان 1394, 10:31 صبح
string query = "IF OBJECT_ID('dbo.Kharid', 'U') IS NULL ";
query += "BEGIN ";
query += "CREATE TABLE [dbo].[Kharid](";
query += "[tbl_Id] bigint IDENTITY(1,1) NOT NULL CONSTRAINT pkId PRIMARY KEY,";






foreach (var s in generate().Take(Convert.ToInt32(MySchemaTableColum ns.Columns.Count))) query += "[" + s.ToString() + "] nvarchar(100) NOT NULL,";


query += ")";
query += " END";



این کد اگه جدول نباشه ایجاد میکنه درضمن( ستون ها رو هم میتونی اینطوری بسازی با foreach ).

ji ming u
پنج شنبه 07 آبان 1394, 12:12 عصر
میشه بیشتر توضیح بدید؟

علی فتحی
پنج شنبه 07 آبان 1394, 19:51 عصر
اقای xman ممنون از جوابتون اگر همچین چیزی ممکن باشه که خیلی عالی میشه.
در ضمن یک روش دیگه وجود داره sqlcmd

علی فتحی
پنج شنبه 07 آبان 1394, 20:03 عصر
من این کدو 100 نه 200 بار دیدم و بلدم ولی نحوه استفاده رو بلد نیستم با کدنویسی.مثلاlinq

CREATE TABLE dbo.PurchaseOrderDetail
(
PurchaseOrderID int NOT NULL
,LineNumber smallint NOT NULL
,ProductID int NULL
,UnitPrice money NULL
,OrderQty smallint NULL
,ReceivedQty float NULL
,RejectedQty float NULL
,DueDate datetime NULL
);
ساخت تیبل .در داخل اس کیو ال منجمنت میدونم کوری مینویسی با اجرا خودش جدول رو درست میکنه.
خب وقتی اس کیو ال رو باز کردی ویزاردی جدول رو میسازیم دیگه دلیلی نداره که از کوری استفاده کنیم.

اونی که لازمه با کد نویسی هستش که کسی تا حلا بهشجواب نداده

علی فتحی
دوشنبه 11 آبان 1394, 11:30 صبح
با عرض سلام:
یک سری کد با برای ساخت جدول و دیتابیس در لینک زیر پیدا کردم لطفا " یک نگاه بیندازید.
http://www.w3-farsi.com/%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DB%8C%DA%A9-%D8%AC%D8%AF%D9%88%D9%84-%D9%88-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%B3%D8%A7%D8%AF%D9%87/

حالا در قسمت ساخت دیتابیس:1> CREATE DATABASE D:\Test2> GO
چگونه دیتا بیس رو در درایو \:D بسازم؟

ژیار رحیمی
دوشنبه 11 آبان 1394, 13:07 عصر
سلام با script دستابیس البته داخل script مسیر ساخت فایل ها رو در مسیر دلخواه ست کن
و با استفاده از sqlcmd -S myServer\instanceName -i C:\myScript.sql
از لینک های مرجع دستورات هم استفاده کنhttp://www.sqlserver.info/tools/how-to-run-sql-scripts-via-command-prompt/
https://msdn.microsoft.com/en-us/library/ms162773.aspx
https://msdn.microsoft.com/en-us/library/ms170572.aspx

Mahmoud.Afrad
دوشنبه 11 آبان 1394, 21:48 عصر
کافیه اسکریپت مورد نیاز رو توسط یک SqlCommand و توسط متد ExecuteNonQuery اجرا کنید(فرقی با اجرای کوئری درج، حذف و ... نداره)