PDA

View Full Version : سوال: اتصال به دیتابیس اکسس



Mehdi Naderi
جمعه 05 شهریور 1389, 06:02 صبح
سلام
برای دریافت اطلاعات از کاربر یک دیتابیس با اکسس و یک جدول درست کردم اما موقع باز کردن دیتابیس error میده (con.open)خطاش هم اینه که چنین دیتابیس وجود نداره در حالیکه این دیتابیس داخل درایو C است
مشکل چیه؟
کتنکشن استرینگ اونم مطابق زیر تعریف کردم


using System.Data.OleDb;
OleDbConnection con;
con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:/Database1.mdb;Persist Security Info=False");
con.Open();

arian_sh3
جمعه 05 شهریور 1389, 06:22 صبح
دوست عزیز در مورد دسترسی به دراوت دقت کن.
UAC معمولا دسترسی به دراو C رو کمی محدود میکنه بهتره جای دیگه ای قرار بدی شاید ارورش رفع شه.
در مورد کانکشن استرینگت شاید بهتر باشه از کامپوننت کانکشن oledb خود ماکروسافت استفاده کنی اگر محدودیتی برای این کار نداری.
اگر سورس برنامت هم خیلی پر حجم نیست و برای سخت نیست upload کنی بذار تا برنامرو ببینیم و با کمک هم مشکل رو حل کنیم.

mmd2009
جمعه 05 شهریور 1389, 07:30 صبح
با سلام خدمت دوست عزیز.

اینو بگم که کدهای شما کاملا درسته و مشکلی نداره.

تنها ایرادت بدون اینکه برنامتو دیده باشم اینه که بانکت از نوع 2007 هستش ولی کانشن استرینگت از نوع 2003 هستش واسه همین نمیتونه پیدا بکنه. من اینو مطمئنم. :چشمک:

شما باید کانکشن استرینگت رو اینطوری بنویسی :



"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Database1.accdb;Persist Security Info=False";


موفق باشید

arian_sh3
جمعه 05 شهریور 1389, 08:01 صبح
با سلام خدمت دوست عزیز.

اینو بگم که کدهای شما کاملا درسته و مشکلی نداره.

تنها ایرادت بدون اینکه برنامتو دیده باشم اینه که بانکت از نوع 2007 هستش ولی کانشن استرینگت از نوع 2003 هستش واسه همین نمیتونه پیدا بکنه. من اینو مطمئنم. :چشمک:

شما باید کانکشن استرینگت رو اینطوری بنویسی :



"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Database1.accdb;Persist Security Info=False";


موفق باشید


با توجه به فرمتی که از database نوشته ).mdb( به نظر نمیاد ندونه تفاوت اکسس 2007 و 2003 رو به هر حال اگر اینجوری بود که چه بهتر و مشکلت خیلی سریع حل میشه ...

mmd2009
جمعه 05 شهریور 1389, 08:11 صبح
ببینید شاید این جمله یه کم بی مورد باشه ولی با این حال میگم.

ببینید نام دیتابیس ایشون Database1 هستش یعنی اینکه وقتی برنامه 2007 رو باز کرده با توجه به نام هایی که شرکت مایکروسافت در نظر میگیره اومدن نام پیشنهادی خودش رو به این صورت داده که با توجه به عکس زیر این امر تایید میشه .

http://up.iranblog.com/Files3/978a6d6ad0c3454d9f79.JPG

حالا من فرض رو بر این گرفتم که این دوستمون یک راست اومده Create رو زده و بانکش رو ایجاد کرده و تغییراتی که خودش خواسته رو داده.


حالا با توجه به صحبت های بالا مه به جای جمله قبلیم که گفتم مطمئنم از این صرفه نظر میکنم و میگم احتمالش هست اینطوری باشه.

واسه همین گفتم احتمالا فرمت بانکش 2007 باشه

و البته یکی از مهمترین دلایل وجود اون خطایی که دوستمون گفتن اینه ه واقعا بانکی وجود داره ها ولی چون فرمتش رو نمیتونه بر اساس کانکشن استرینگ بخونه اون ارور رو صادر میکنه و میگه اصلا چنین چیزی نیست.

arian_sh3 (http://www.barnamenevis.org/forum/member.php?u=150017) عزیز البته شاید من اشتباه بکنم و البته امیدوارم جمله ی اخر شما مصداق این دوستمون بشه.

خیلی ممنون بابت توجهت

javad_r_85
جمعه 05 شهریور 1389, 08:49 صبح
سلام
برای دریافت اطلاعات از کاربر یک دیتابیس با اکسس و یک جدول درست کردم اما موقع باز کردن دیتابیس error میده (con.open)خطاش هم اینه که چنین دیتابیس وجود نداره در حالیکه این دیتابیس داخل درایو C است
مشکل چیه؟
کتنکشن استرینگ اونم مطابق زیر تعریف کردم


using System.Data.OleDb;
OleDbConnection con;
con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:/Database1.mdb;Persist Security Info=False");
con.Open();



سلام دوست عزیز کانکشن استرینگ شما ازش مشکل می باره نمیدونم چرا دوستان میگم درسته
اولین مشکل اینه که شما به جای اسلش باید بک اسلش استفاده کنیدC:\Database1.mdb

دوم اینکه اگر بخواهیید به عنوان آدرس بشناسه با ید دو تا بک اسلش بزارید یعنی
C:\\Database1.mdb
سوم اینکه اگر عشقت نکشید این کارو بکنی می تونی از یه @ قبل کانکشن استرینگت استفاده کنی
این هم کانکشن استرینگ صحیح




using System.Data.OleDb;
OleDbConnection con;
con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\\Database1.mdb");
con.Open();

یا

using System.Data.OleDb;
OleDbConnection con;
con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\Database1.mdb");
con.Open();



چهارم اینکه چرا این همه زحمت بکشی از طریق منو و گزینه data\add new datasource بانک را انتخاب کن با این کار هم بانک به پروژت اضافه می شه هم ر server explore ووقتی روی بانکت بری توی server explore وروش کلیک کنی اونوقت برو تو properties و کانکشن سترینگ را کپی کن و توی برنامت استفاده کن البته یه تغییرات جزئی می خواد که اونم در بالا ذکر شد .از این راحت تر دیگه نیست.

arian_sh3
جمعه 05 شهریور 1389, 12:46 عصر
سلام دوست عزیز کانکشن استرینگ شما ازش مشکل می باره نمیدونم چرا دوستان میگم درسته
اولین مشکل اینه که شما به جای اسلش باید بک اسلش استفاده کنیدC:\Database1.mdb

دوم اینکه اگر بخواهیید به عنوان آدرس بشناسه با ید دو تا بک اسلش بزارید یعنی
C:\\Database1.mdb
سوم اینکه اگر عشقت نکشید این کارو بکنی می تونی از یه @ قبل کانکشن استرینگت استفاده کنی
این هم کانکشن استرینگ صحیح




using System.Data.OleDb;
OleDbConnection con;
con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\\Database1.mdb");
con.Open();

یا

using System.Data.OleDb;
OleDbConnection con;
con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\Database1.mdb");
con.Open();



چهارم اینکه چرا این همه زحمت بکشی از طریق منو و گزینه data\add new datasource بانک را انتخاب کن با این کار هم بانک به پروژت اضافه می شه هم ر server explore ووقتی روی بانکت بری توی server explore وروش کلیک کنی اونوقت برو تو properties و کانکشن سترینگ را کپی کن و توی برنامت استفاده کن البته یه تغییرات جزئی می خواد که اونم در بالا ذکر شد .از این راحت تر دیگه نیست.

دقیقا حق باشماست دوست عزیز من با URL اشتباه گرفتم و دقت نکردم. در مورد استفاده از @ هم اگر در فایل کانفیگ باشه مشکلی پیش نمیاد این روشیه که من استفاده میکنم اکثرا...
باز هم از بابت بی دقتی عذر می خوام

mmd2009
جمعه 05 شهریور 1389, 13:00 عصر
سلام دوست عزیز کانکشن استرینگ شما ازش مشکل می باره نمیدونم چرا دوستان میگم درسته
اولین مشکل اینه که شما به جای اسلش باید بک اسلش استفاده کنیدC:\Database1.mdb

دوم اینکه اگر بخواهیید به عنوان آدرس بشناسه با ید دو تا بک اسلش بزارید یعنی
C:\\Database1.mdb
سوم اینکه اگر عشقت نکشید این کارو بکنی می تونی از یه @ قبل کانکشن استرینگت استفاده کنی
این هم کانکشن استرینگ صحیح




using System.Data.OleDb;
OleDbConnection con;
con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\\Database1.mdb");
con.Open();

یا

using System.Data.OleDb;
OleDbConnection con;
con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\Database1.mdb");
con.Open();

چهارم اینکه چرا این همه زحمت بکشی از طریق منو و گزینه data\add new datasource بانک را انتخاب کن با این کار هم بانک به پروژت اضافه می شه هم ر server explore ووقتی روی بانکت بری توی server explore وروش کلیک کنی اونوقت برو تو properties و کانکشن سترینگ را کپی کن و توی برنامت استفاده کن البته یه تغییرات جزئی می خواد که اونم در بالا ذکر شد .از این راحت تر دیگه نیست.

اگر منظورت منم که گفتم کدش درسته، خب مطمئنا درسته چون شما ایرادش رو یه چیز دیگه فرض کردی. اصلا ایشون فرمتش از نوع 2007 هستش ولی کانکشت استرینگ از نوع 2003 هستش. در مورد این / که گفتید باید \\ بذاره باید بگم که اصلا فرقی نداره.

کداش درستن و یه اشتباه جزئی داره اونم اینه باید با فرمت 2003 ذخیره کنه بانک رو

همین!

arian_sh3
جمعه 05 شهریور 1389, 13:43 عصر
اگر منظورت منم که گفتم کدش درسته، خب مطمئنا درسته چون شما ایرادش رو یه چیز دیگه فرض کردی. اصلا ایشون فرمتش از نوع 2007 هستش ولی کانکشت استرینگ از نوع 2003 هستش. در مورد این / که گفتید باید \\ بذاره باید بگم که اصلا فرقی نداره.

کداش درستن و یه اشتباه جزئی داره اونم اینه باید با فرمت 2003 ذخیره کنه بانک رو

همین!

والا دوست عزیز تجربه ی شخصیه من نشون میده فرق داره...
\ برای آدرس های ویندوزی و لوکال استفاده میشه اما برای آدرس دهی در شبکه از / استفاده میشه.

Mehdi Naderi
جمعه 05 شهریور 1389, 15:26 عصر
با تشکر از همه دوستان
مشکلم حل شد . کانکشن رو باید بصورت زیر تعریف کرد


con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Database1.accdb;";

دیتابیسم اکسس 2007 است