PDA

View Full Version : سوال: چگونگي اجراي يك كوئري از داخل سي شارپ



Programmer 1
سه شنبه 11 آبان 1389, 22:13 عصر
سلام،

من در sql 2000 از طريق Query Analyzer يك كوئري نوشتم كه ديتابيس و جداولي رو ايجاد ميكنه ، اين دستورات رو در يك فايل ذخيره كردم ، حالا من چه طوري ميتونم از طريق سي شارپ اين فايل رو اجرا كنم ؟

با تشكر /.

adelisardo
سه شنبه 11 آبان 1389, 22:39 عصر
سلام دوست عزیز
چون در هر بار اجرای SqlCommand شما می توانید فقط یک دستور SQL را اجرا کنید ابتدا آنرا باید به تعدا کل دستور های مورد نیاز تبدیل کنید و سپس هر کدام را به صورت مجزا اجرا کنید .
نکته : باید حتما بین دستورات مختلف از کلمه GO استفاده کنید .
در صورت نیاز برای تضمین اجرای همه دستورات یا اجرای هیچکدام ( در صورت خطا ) از Transaction استفاده کنید .
کد نمونه زیر بیشتر به شما کمک می کند .
با احترام


string sql = File.ReadAllText("مسیر فایل");
string[] commands = Regex.Split(sql, @"\s[Gg][Oo]\s");
using (SqlConnection connection = new SqlConnection("رشته اتصال"))
{
connection.Open();
foreach (var item in commands)
{
SqlCommand sqlCommand = new SqlCommand(item, connection);
sqlCommand.ExecuteNonQuery();
}
connection.Close();
}

Reza_Yarahmadi
چهارشنبه 12 آبان 1389, 08:16 صبح
چون در هر بار اجرای SqlCommand شما می توانید فقط یک دستور SQL را اجرا کنید ابتدا آنرا باید به تعدا کل دستور های مورد نیاز تبدیل کنید و سپس هر کدام را به صورت مجزا اجرا کنید .چه كسي همچين حرفي زده؟؟؟:متفکر:
نمونه هاي زير رو ببينيد
SqlCommand cmd = new SqlCommand(@" Insert Into tbl Values ('Data1', 'Value1', 100,101)
Insert Into tbl Values ('Data2', 'Value2', 102,103)
Insert Into tbl Values ('Data3', 'Value3', 104,105)", conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
SqlDataAdapter da = new SqlDataAdapter(@"Declare @temp varchar(max)
Set @Temp = 'Reza Yarahmadi'
Select * From tbl Where Name = @Temp
union all
Select * From tbl
union all
Select * From tbl Where Id > 1
", conn);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
هر محدوديتي كه در SQL Server وجود داره اينجا هم وجود داره.

من در sql 2000 از طريق Query Analyzer يك كوئري نوشتم كه ديتابيس و جداولي رو ايجاد ميكنه ، اين دستورات رو در يك فايل ذخيره كردم ، حالا من چه طوري ميتونم از طريق سي شارپ اين فايل رو اجرا كنم ؟فرقي با بقيه موارد نداره ، با چيزي شبيه كد زير ميتونيد اين كار رو انجام بديد.
string sqlStr = File.ReadAllText("File Path");
SqlCommand cmd = new SqlCommand(sqlStr, conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();