PDA

View Full Version : تغییر دیتابیس فعال در زمان اجرا بدون ایجاد مجدد Connection



Behrouz_Rad
چهارشنبه 15 تیر 1384, 11:24 صبح
صورت مسئله:
تغییر دیتابیس Connection در زمان اجرا بدون ایجاد مجدد Connection:
<hr>

اصول کار:
استفاده از متد ChangeDatabase شی Connection به منظور تغییر دیتابیس Connection.

توضیحات مثال:
در مثال زیر، Connection ای به دیتابیس myCurrentDB که در SQL Server وجود دارد، ایجاد می شود.
سپس، Connection به منظور استفاده از دیتابیس myChangedDB تنظیم خواهد شد.
همچنین از خاصیت Database شی SqlConnection جهت نمایش نام دیتابیس Connection استفاده شده است.


using System;
using System.Configuration;
using System.Text;
using System.Data;
using System.Data.SqlClient;

// . . .

StringBuilder result = new StringBuilder&#40; &#41;;

// Create the connection accessing myCurrentDB database.
SqlConnection conn = new SqlConnection&#40;
ConfigurationSettings.AppSettings&#91;"Sql_ConnectString"&#93;&#41;;
result.Append&#40;"Connection String&#58;" + Environment.NewLine&#41;;
result.Append&#40;conn.ConnectionString + Environment.NewLine + Environment.NewLine&#41;;

conn.Open&#40; &#41;;
result.Append&#40;"Connection.State&#58; " + conn.State + Environment.NewLine&#41;;
result.Append&#40;"Database&#58; " + conn.Database + Environment.NewLine&#41;;

// Change the database to myChangedDB.
conn.ChangeDatabase&#40;"pubs"&#41;;
result.Append&#40;"Database&#58; " + conn.Database + Environment.NewLine&#41;;

conn.Close&#40; &#41;;
result.Append&#40;"Connection.State&#58; " + conn.State + Environment.NewLine&#41;;
result.Append&#40;"Database&#58; " + conn.Database&#41;;

resultTextBox.Text = result.ToString&#40; &#41;;

توضیحات:
متد ChangeDatabase که در اینترفیس IDbConnection تعریف شده، نمایانگر یک اتصال یا Connection به منبع داده است. پرووایدرهای SQL Server، OLE DB و Oracle از این اینترفیس جهت برقراری ارتباط با منبع داده استفاده می کنند.
متد ChangeDatabase تنها یک آرگومان دارد و آن هم نام دیتابیسی است که باید با دیتابیس فعلی جایگزین شود.

نکته مهم 1: اگردر هنگام فراخوانی این متد، Connection، باز یا اصطلاحا Open نشده و ارتباط با منبع داده برقرار نباشد، به بروز یک خطا از نوع InvalidOperationException منجر خواهد شد.

نکته مهم 2: در صورتی که به هر دلیلی، عمل تعویض دیتابیس با موفقیت انجام نپذیرد، یک خطا بسته به نوع پرووایدر اتفاق خواهد افتاد.

نکته مهم 3: پس از فراخوانی متد ChangeDatabase و سپس بستن Connection با استفاده از متد Close، نام دیتابیس کانکشن استرینگ، به مقدار پیش فرض آن یعنی قبل از فراخوانی متد ChangeDatabase بر خواهد گشت.
<hr>

موفق باشید.

skywork
شنبه 04 آذر 1385, 00:11 صبح
با عرض سلام خدمت جناب آقای نصیری

من مشکل ساخت کوئری برای بانک اطلاعاتی دارم و نمی دونم چگونه درست کنم در محیط ASP.NET راهنماییم کنید
درضمن من هر بار که محیط آی اس پ خراب می شه مجبورم دوباره محیط رو باز سازی کنم و بعد مشکل اتصال پیدا میکنه و من مجبورم به طور کامل از دات نت خارج شم ...................
OleDbDataAdapter1.fill(dataset11)

و همچنین محیط رو به گونه ای طراحی کردم که بصورت چند تکس باکس در بالا برای نشان دادن محتویات بانک و چند باتون ابتدا و انتها و بعدی و قبلی قرار دادم ولی وقتی کدی که برای آن باتون نوشتم محتویات رکورد بعدی را نشون نمیده ..... برای باتون
DIM POSITION AS INTEGER
DIM ID AS STRING
POSITION =0
ME.VIEWSTATE("POSITION")=POSITION
ID = DATASET11.TABLES(0).ROWS(POSITION).ITEM("AU_ID")
DATAVIEW1.ROWFILTER ="AU_ID = '" & ID &"'"
TEXTBOX1.DATABINDING()
LABEL3.TEXT=POSITION + &" OF " &DATASET11.TABLES(0).ROWS.COUNT

AHASBCB@YAHOO.COM
AHASBCB@NOAVAR.COM

ParsaNM
دوشنبه 12 اردیبهشت 1390, 13:02 عصر
دوست عزيز اگر بخواهيم که به يه server ديگه وصل بشيم چيکار ميشه کرد ...؟