razavi_university
یک شنبه 08 اردیبهشت 1387, 12:26 عصر
سلام
من می خوام برنامه ام هر موقع که اجرا میشه وجود دیتابیسش رو در SQLExpress چک کنه و در صورتی که Attach نبود اون رو Attach کنه
واسه اینکار این کد رو نوشتم ولی جواب نمیده! چه مشکلی داره؟
public FrmMain()
{
InitializeComponent();
}
private void FrmMain_Load(object sender, EventArgs e)
{
checkDB();
}
private void checkDB()
{
string masterCS = Properties.Settings.Default.csMas;//Connection string to Master DB
DataBase.Database db = new DataBase.Database(masterCS);
db.connect();
DataTable dt = db.select("select name from sysdatabases where name = ' My DB Name ' ");
if (!(dt.Rows.Count>0))
{
//MessageBox.Show("بانک اطلاعاتی برنامه در پایگاه داده قرار ندارد \n لطفا تا قرارگیری آن کمی مننظر بمانید","خطا",MessageBoxButtons.OK,MessageBoxIcon.Error);
attachDB();
}
db.disconnect();
}
private void attachDB()
{
SqlCommand cmd = new SqlCommand();
string masterCS = Properties.Settings.Default.csMas;
DataBase.Database db = new FSCO.DataBase.Database(masterCS);
db.connect();
db.connect();
string strCmd = "EXECUTE sp_attach_db @dbname,@filename1,@filename2";
cmd.CommandText = strCmd;
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@dbname", "Fanavaran");
cmd.Parameters.AddWithValue("@filename1", Application.StartupPath + "\\db\\Fanavaran.mdf (file://\\db\\Fanavaran.mdf)");
cmd.Parameters.AddWithValue("@filename2", Application.StartupPath + "\\db\\Fanavaran_log.ldf (file://\\db\\Fanavaran_log.ldf)");
//connectionstr="Data Source=.\sqlexpress;Initial Catalog=master;Integrated Security=True";
db.doSPU1(cmd);
db.disconnect();
}
}
}
آیا اصلا این روش عاقلانه است ؟:متفکر:
برای اتصال به دیتابیس از یک کلاس آماده استفاده میشه واسه همین کدش اینطوریه
من می خوام برنامه ام هر موقع که اجرا میشه وجود دیتابیسش رو در SQLExpress چک کنه و در صورتی که Attach نبود اون رو Attach کنه
واسه اینکار این کد رو نوشتم ولی جواب نمیده! چه مشکلی داره؟
public FrmMain()
{
InitializeComponent();
}
private void FrmMain_Load(object sender, EventArgs e)
{
checkDB();
}
private void checkDB()
{
string masterCS = Properties.Settings.Default.csMas;//Connection string to Master DB
DataBase.Database db = new DataBase.Database(masterCS);
db.connect();
DataTable dt = db.select("select name from sysdatabases where name = ' My DB Name ' ");
if (!(dt.Rows.Count>0))
{
//MessageBox.Show("بانک اطلاعاتی برنامه در پایگاه داده قرار ندارد \n لطفا تا قرارگیری آن کمی مننظر بمانید","خطا",MessageBoxButtons.OK,MessageBoxIcon.Error);
attachDB();
}
db.disconnect();
}
private void attachDB()
{
SqlCommand cmd = new SqlCommand();
string masterCS = Properties.Settings.Default.csMas;
DataBase.Database db = new FSCO.DataBase.Database(masterCS);
db.connect();
db.connect();
string strCmd = "EXECUTE sp_attach_db @dbname,@filename1,@filename2";
cmd.CommandText = strCmd;
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@dbname", "Fanavaran");
cmd.Parameters.AddWithValue("@filename1", Application.StartupPath + "\\db\\Fanavaran.mdf (file://\\db\\Fanavaran.mdf)");
cmd.Parameters.AddWithValue("@filename2", Application.StartupPath + "\\db\\Fanavaran_log.ldf (file://\\db\\Fanavaran_log.ldf)");
//connectionstr="Data Source=.\sqlexpress;Initial Catalog=master;Integrated Security=True";
db.doSPU1(cmd);
db.disconnect();
}
}
}
آیا اصلا این روش عاقلانه است ؟:متفکر:
برای اتصال به دیتابیس از یک کلاس آماده استفاده میشه واسه همین کدش اینطوریه