PDA

View Full Version : ایجاد بانک بدون کانکشن



janbozorgi
دوشنبه 11 بهمن 1389, 07:13 صبح
با سلام به همه اساتید
بنده قصد دارم برنامه خود را بصورت نصبی درآوردم و این مستلزم آن است که بانک اطلاعاتی خود را نیز همراه برنامه داشته باشم تا در یک کامپیوتر کلاینت دیگر، برنامه اجرا شود. برای این منظور راه حل های مختلفی را تست کردم از جمله هنگام ساختن پک نصبی ابتدا sqlexpress را نصب میکنم و بعد بانک (که بصورت mdf) است را نیز در مسیر فایل اجرایی قرار میدهم ولی این امر جواب نداد. بعد راه حل های مختلف... . بنظرم رسید که یک اسکریبت ایجاد بانک و جداول و ویوهایم را در یک فایل تکست قرار دهم و در پک نصبی ابتدا sqlexpress را نصب کنم و بعد فایل تکست خود را با کمک دستورات سی شارپ اجرا کنم تا بانک و محتویات اولیه آن نصب شود که بنظر راه بدی نمیرسد. اما سوال اینجاست که به چه شکلی این کار را انجام بدهم، یعنی بدون برقراری اتصال این دستورات sql اجرا کنم که در بانک sqlexpress بنشینند.
ممنون میشوم دوستان از هیچ کمکی دریغ نورزند و در مورد این سوال کمک کنند و اگر راه حل بهتری دارند نیز ارائه فرمایند.
در پناه خداوند باشید

janbozorgi
دوشنبه 11 بهمن 1389, 11:16 صبح
دوستان این تاپیک که در تالار sql server هم مطرح شده بود جواب داده شده است. ولی بطور خلاصه در زیر جواب آمده است تا شاید مورد استفاده قرار بگیرد:
اول اینکه حتما میبایست نوع دستور را تکست قرار داد
دوم اینکه از SqlClient استفاده بشه چون به OleDb من نتونستم(چون Provider , تنظیمات دیگه ای میخواهد...)
سوم اینکه بانکتون رو توی مسیر اجرایی (فایل exe) قرار داد.
در زیر هم کد رو همراه با کوئری استرینگش آوردم:


string aa = System.IO.Directory.GetCurrentDirectory();
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection();
con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + aa + @"\Ali.mdf;Integrated Security=True;User Instance=True";
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select * from tblInfo";
con.Open();
System.Data.SqlClient.SqlDataReader dr = cmd.ExecuteReader();
string a = "";
while (dr.Read())
{
a = dr.GetString(1);
}
con.Close();
MessageBox.Show(a.ToString());


دوستان کد رو خودشون اپتیمایز کنند.
با تشکر