PDA

View Full Version : مسیر دهی برای وصل شدن به دیتابیس



sogoli
سه شنبه 17 اسفند 1389, 14:28 عصر
سلام
من یک برنامه نوشتم که وصل میشه به یک دیتابیس.برای مسیر دهی از روش زیر استفاده کردم:"



string path = "c:\\DB.mdb";
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path +
";Jet OLEDB:Database Password=123456;";



حال سوالم این هست که به چه شکل می توان گفت که ابتدا از مسیر بالا دنبال دیتابیس بگرد که اگر نبود از مسیر بعدی مثلا d:\\DB.mdb استفاده کن؟

f4rib0rz
سه شنبه 17 اسفند 1389, 17:03 عصر
می تونی بزاری توی try cath یا اینکه اول چک کنی که فایل مورد نظر وجود داره یا نه . کد زیر رو ببین


string path = "c:\\DB.mdb";

if (!File.Exists(path))
{
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path +
";Jet OLEDB:Database Password=123456;";
}
else
{
path = "D:\\DB.mdb";
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path +
";Jet OLEDB:Database Password=123456;";
}

sogoli
سه شنبه 17 اسفند 1389, 17:27 عصر
می تونی بزاری توی try cath یا اینکه اول چک کنی که فایل مورد نظر وجود داره یا نه . کد زیر رو ببین


string path = "c:\\DB.mdb";

if (!File.Exists(path))
{
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path +
";Jet OLEDB:Database Password=123456;";
}
else
{
path = "D:\\DB.mdb";
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path +
";Jet OLEDB:Database Password=123456;";
}

ظاهرا وقتی برنامه رو کامپایل می کنم نمی تونه مسیر رو هندل کنه

shytonak
سه شنبه 17 اسفند 1389, 19:25 عصر
من خودم از کد زیر لستفاده کردم و مشکلی نداشت.

OleDbConnection ConString = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Environment.CurrentDirectory + "\\DataBase.accdb");
OleDbConnection Con = ConString;
OleDbCommand Command = Con.CreateCommand();
DataSet ds = new DataSet();
Con.Open();

sogoli
سه شنبه 17 اسفند 1389, 19:47 عصر
من خودم از کد زیر لستفاده کردم و مشکلی نداشت.

OleDbConnection ConString = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Environment.CurrentDirectory + "\\DataBase.accdb");
OleDbConnection Con = ConString;
OleDbCommand Command = Con.CreateCommand();
DataSet ds = new DataSet();
Con.Open();

خوب در این کد جا تعریف شده اگر دیتابیس در مسیر فوق نبود از مسیر جایگزین استفاده کند؟

arefba
چهارشنبه 18 اسفند 1389, 01:04 صبح
خیلی ساده


try
{
OleDbConnection ConString = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12. 0;Data Source=" + Environment.CurrentDirectory + "\\DataBase.accdb");
OleDbConnection Con = ConString;
OleDbCommand Command = Con.CreateCommand();
DataSet ds = new DataSet();
Con.Open();
}
catch
{
OleDbConnection ConString = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12. 0;Data Source=" +"هر مسیری");
OleDbConnection Con = ConString;
OleDbCommand Command = Con.CreateCommand();
DataSet ds = new DataSet();
Con.Open();
}

f4rib0rz
چهارشنبه 18 اسفند 1389, 13:27 عصر
خب شما بگید برنامتون چیه چرا می خوایین این کار رو بکنین تا بیشتر توضیح بدم یا اصلا تو نوشتنش کمکتون کنم .
تقربا می شه گفت تو اکثر مواقع (کار اصولی و حرفه ای) مسیر بانک رو کنار فایل exe میدن .
به عنوان مثال :


con.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\database.mdb;User ID=Admin;JET OLEDB:Database Password=1234;Persist Security Info=False;Mode=ReadWrite;";


نمی دونم شما چرا دنبال این می گردین که یه مسیر دیگه رو بگرده . اگه می خوایین از error جلوگیری کنین مثل مثالی که arefba زده کد رو بزار تو try catch .

اگه می خوای کل درایوا رو بگری اول باید یه جوری درایو های سیستم رو بدست بیاری بعد بزاری تو .switch

sogoli
پنج شنبه 19 اسفند 1389, 12:02 عصر
من از دستور زیر استفاده کردم :

try
{
string path = "C:\\DB.mdb";
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path +
";Jet OLEDB:Database Password=4\\5=Q3)0<9;";
}
catch
{
string path = System.Windows.Forms.Application.StartupPath + "\\DB.mdb";
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path +
";Jet OLEDB:Database Password=4\\5=Q3)0<9;";
}


بااجرای برنامه اگر دیتابیس در مسر اول باشد، برنامه بدون مشکل اجرا می شود ولی وقتی در مسیر اول نباشد، از مسیر دوم استفاده نمی کند!درواقع حالت catch را چک نمی کند. علت چی می تونه باشه؟

f4rib0rz
پنج شنبه 19 اسفند 1389, 12:44 عصر
یه همچین چیزی امکان نداره . درصورتی قسمت cath اجرا نمیشه که دستور try کامل و بدون هیچ گونه خطایی اجرا بشه . پس اگه قسمت catch که مسیر دوم db هست اجرا نمیشه بدلیل اینه که قسمت try بدون مشکل اجرا شده ....

sogoli
پنج شنبه 19 اسفند 1389, 16:00 عصر
یه همچین چیزی امکان نداره . درصورتی قسمت cath اجرا نمیشه که دستور try کامل و بدون هیچ گونه خطایی اجرا بشه . پس اگه قسمت catch که مسیر دوم db هست اجرا نمیشه بدلیل اینه که قسمت try بدون مشکل اجرا شده ....

ببینید من در قسمت try ِیک مسیر تعیین کردم که قاعدتا درصورت عدم وجود فایلی در ان مسیر باید به قسمتcatch رجوع کند ولی این اتفاق نمی افتد!

mustafa13
دوشنبه 08 فروردین 1390, 21:39 عصر
سلام
بهتر نیست که چک کنیم ببینی برنامه کجا نصب شده (یعنی مسیر نصب برنامه کجا رخ داده) بعد در ان مسیر جستجو کنه بانک اطلاعاتی را

f4rib0rz
دوشنبه 15 فروردین 1390, 11:58 صبح
ببینید من در قسمت try ِیک مسیر تعیین کردم که قاعدتا درصورت عدم وجود فایلی در ان مسیر باید به قسمتcatch رجوع کند ولی این اتفاق نمی افتد!
یه همچین چیزی اصلا امکان نداره . کد رو بذار اینجا تا ببینم چی شده...!!:متفکر: