PDA

View Full Version : attach کردن دیتابیس از داخل برنامه



saeedhushmand
شنبه 21 آبان 1390, 17:14 عصر
من یه برنامه با sql نوشتم می خوام با زدن یک button در داخل برنامم بتونم دیتابیس برنامم attach کنم

Sirwan Afifi
شنبه 21 آبان 1390, 17:51 عصر
میتونی در هنگام لود برای اولین بار روی هر سیستمی دیتابیست رو Generate کنی.

saeedhushmand
شنبه 21 آبان 1390, 18:25 عصر
اگه می شه در حد مبتدی توضیح بدید ممنون می شم

zarrinnegar
شنبه 21 آبان 1390, 19:40 عصر
باید به sql یک connection بزنی

بعد دستور زیر رو بصورت یک command تعریف کنی و بفرستی به sql


EXEC sp_attach_db @dbname = N'pubs', @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
البته به جای مسیر ها و اسم فایل ذکر شده مسیر و اسم فایل خودت رو میدی

saeedhushmand
شنبه 21 آبان 1390, 20:07 عصر
می تونی روی کد زیر برام بزاری ممنونت می شم

SqlConnection myConn;
SqlCommand myComm;
SqlDataReader myDR;
myConn = new SqlConnection(StrConn);
myComm = new SqlCommand();
myComm.Connection = myConn;
myComm.CommandType = CommandType.Text;
myComm.CommandText = StrQury;
myConn.Open();
myDR = myComm.ExecuteReader();

zarrinnegar
شنبه 21 آبان 1390, 20:17 عصر
می تونی روی کد زیر برام بزاری ممنونت می شم

SqlConnection myConn;
SqlCommand myComm;
SqlDataReader myDR;
myConn = new SqlConnection(StrConn);
myComm = new SqlCommand();
myComm.Connection = myConn;
myComm.CommandType = CommandType.Text;
myComm.CommandText = StrQury;
myConn.Open();
myDR = myComm.ExecuteReader();


به جای strquery مینویسی

البته به این سادگی هم نیست چون اول باید چک کنی که sql وجود داشته باشه
دوم دیتابیسی با این نام قبلا attach نشده باشه
بعدش متغیر strqury را برابر اون مقدار قرار میدی و اجرا میکنی


SqlConnection myConn;
SqlCommand myComm;
SqlDataReader myDR;
myConn = newSqlConnection(StrConn);
myComm = newSqlCommand();
myComm.Connection = myConn;
myComm.CommandType = CommandType.Text;
string strqury = "EXEC sp_attach_db @dbname = N'pubs', @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'"

myComm.CommandText = StrQury;
myConn.Open();
myDR = myComm.ExecuteReader();

saeedhushmand
شنبه 21 آبان 1390, 21:03 عصر
\ توی کد ارور می ده

zarrinnegar
شنبه 21 آبان 1390, 21:08 عصر
\ توی کد ارور می ده

exec رو از اولش بردار احتمالا بخاطر لونه چون توی query خود sql جواب میده

saeedhushmand
شنبه 21 آبان 1390, 21:22 عصر
ممنون از وقتی که گذاشتی
درست نشد....

zarrinnegar
شنبه 21 آبان 1390, 23:10 عصر
private void button1_Click(object sender, EventArgs e)
{
try
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=(local);Initial Catalog=master;Integrated Security=True";
con.Open();

string str = "use master;" +
"EXECUTE sp_attach_db @dbname = N'SaynaDB' , " +
" @filename1 = N'" + System.Environment.CurrentDirectory + "\\Data\\SaynaDB.mdf'," +
"@filename2 = N'" + System.Environment.CurrentDirectory + "\\Data\\SaynaDB_log.ldf'" ;

SqlCommand cmd = new SqlCommand(str,con);
cmd.ExecuteNonQuery();
con.Close();


;(" شد Attach دیتابیس با موفقیت") MssageBox.Show
{

catch (Exception x)
{
if(x.Message.IndexOf("already exists")>=0)

;(" دیتابیس موجود است").MssageBox.Show
else
MessageBox.Show(x.Message);
}
}

saeedhushmand
یک شنبه 22 آبان 1390, 01:43 صبح
می شه یه دستور اضافه کنی که یک دیتابیس جدید ایجاد کنه و جداول توی اون بریزه..

asif1358
یک شنبه 22 آبان 1390, 01:55 صبح
به جای strquery مینویسی

البته به این سادگی هم نیست چون اول باید چک کنی که sql وجود داشته باشه
دوم دیتابیسی با این نام قبلا attach نشده باشه
بعدش متغیر strqury را برابر اون مقدار قرار میدی و اجرا میکنی


SqlConnection myConn;
SqlCommand myComm;
SqlDataReader myDR;
myConn = newSqlConnection(StrConn);
myComm = newSqlCommand();
myComm.Connection = myConn;
myComm.CommandType = CommandType.Text;
string strqury = "EXEC sp_attach_db @dbname = N'pubs', @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'"

myComm.CommandText = StrQury;
myConn.Open();
myDR = myComm.ExecuteReader();



آقا ترا خدا اینقدر لقمه را نچرخانید!!
چرا با کدنویسی اضافی خود را گیج و خسته می کنید؟!
ساده بنویسید:


SqlConnection con = new SqlConnection(ConStr);
con.Open();
SqlCommand com = new SqlCommand("EXEC sp_attach_db @dbname = 'MyDb', @filename1 = 'MyPath\\MyDb.mdf', @filename2 = 'MyPath\\MyDb_log.ldf'", con);
com.ExecuteNoneQuery();
con.Close();

saeedhushmand
یک شنبه 22 آبان 1390, 02:07 صبح
اگر می شه کد ی رو بهش اضافه کن که یک دیتابیس جدید درست کنه

masoud.rhb
پنج شنبه 26 بهمن 1391, 10:55 صبح
این که ارور داره همتون نوشتین!!!! الان کلمه highlight جزو string به حساب نمیاد که!!!! چون قبلو بعدش " گذاشتید از رشته خارج میشه!!!!!!!!!!!!

rezarko
پنج شنبه 26 بهمن 1391, 11:03 صبح
میتونی در هنگام لود برای اولین بار روی هر سیستمی دیتابیست رو Generate کنی.


چه طور میشه اینکارو کرد؟