PDA

View Full Version : سوال: مشکل در ارتباط با پایگاه داده access



reza69
پنج شنبه 14 دی 1391, 10:47 صبح
سلام
من فایل پایگاه داده ی access رو تو پوشه ی سورس خود پروژم ریختم چون میخوام در صورت انتقال مشکلی در connection string نباشه ولی نمیدونم چه آدرسی باید تو connection string بنویسم که موقع انتقال اون به یه سیستم دیگه ارتباط قطع نشه.این کدمه:

OleDbConnection constr = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\mydb.accdb");
string SqlString = "Insert Into mytable (name,family,birthday,regcode,mobile,picture) Values (?,?,?,?,?,?)";
OleDbConnection con = new OleDbConnection("constr");
OleDbCommand cmd = new OleDbCommand(SqlString, con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("name", txtname.Text);
cmd.Parameters.AddWithValue("family", txtfamily.Text);
cmd.Parameters.AddWithValue("birthday", txtbirthday.Text);
cmd.Parameters.AddWithValue("regcode", txtregcode.Text);
cmd.Parameters.AddWithValue("mobile", txtmobile.Text);
cmd.Parameters.AddWithValue("picture", pictureBox1.Image);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

و این ارور رو میبینم
97777

par3eh
پنج شنبه 14 دی 1391, 11:01 صبح
سلام.
از این استفاده کن :

OleDbConnection constr = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|\mydb.accdb;Persist Security Info=true;")

بعد از کامپایل برنامه پایگاه از فولدری که فایل exe وجود داره خونده میشه.و میتونی منتقلش کنی.

as!d_m
پنج شنبه 14 دی 1391, 11:03 صبح
دوست عزیز فایل Access رو توی پوشه debag پروژت کپی کن و توی connection string اونجایی که توش ادرس هست رو بردار و بجاش application.startuppath رو بنویس این تکه کد ادرس پوشه دیباگ رو برمی گردونه فقط کافیه آخر سرداخل دوبل کوتیشن نام فایلت رو با پسوند بنویسی

reza69
پنج شنبه 14 دی 1391, 11:11 صبح
دوست عزیز فایل Access رو توی پوشه debag پروژت کپی کن و توی connection string اونجایی که توش ادرس هست رو بردار و بجاش application.startuppath رو بنویس این تکه کد ادرس پوشه دیباگ رو برمی گردونه فقط کافیه آخر سرداخل دوبل کوتیشن نام فایلت رو با پسوند بنویسی
این کارو کردم ولی باز همون ارور رو میده

OleDbConnection constr = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=application.startuppath");

reza69
پنج شنبه 14 دی 1391, 11:13 صبح
سلام.
از این استفاده کن :
OleDbConnection constr = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|\mydb.accdb;Persist Security Info=true;")
بعد از کامپایل برنامه پایگاه از فولدری که فایل exe وجود داره خونده میشه.و میتونی منتقلش کنی.
این کد رو اجرا کردم باز همون ارور رو میده.

as!d_m
پنج شنبه 14 دی 1391, 11:18 صبح
اشتباه نوشتی دوست من
کد زیر رو استفاده کن


OleDbConnection constr = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12. 0;Data Source="+application.startuppath+@"\mydb.accdb" );

reza69
پنج شنبه 14 دی 1391, 11:28 صبح
اشتباه نوشتی دوست من
کد زیر رو استفاده کن

OleDbConnection constr = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12. 0;Data Source="+application.startuppath+@"\mydb.accdb" );
بازم همون ارور رو میده.
فکر کنم از این خط ارور میگیره

string SqlString = "Insert Into mytable(name,family,birthday,regcode,mobile,pictur e)Values(@a,@b,@c,@d,@e,@f)";

par3eh
جمعه 15 دی 1391, 01:17 صبح
متن ارورتو بزار.همون ارور قبلو میده؟

reza69
جمعه 15 دی 1391, 09:25 صبح
متن ارورتو بزار.همون ارور قبلو میده؟
بله ولی خط پایین connection string ،تو قسمت پایین صفحه تو قسمت ارورها مینویسه.(خط2)
ولی بعید میدونم خط 2 مشگلی داشته باشه ایراد از connection string هست.
97822

par3eh
جمعه 15 دی 1391, 09:32 صبح
سلام.
میتونی به لینک زیر سر بزنی:
http://www.connectionstrings.com/access-2007


Standard security

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;
Persist Security Info=False;


With database password
This is the connection string to use when you have an Access 2007 database protected with a password using the "Set Database Password" function in Access.

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;
Jet OLEDB:Database Password=MyDbPassword;
Some reports of problems with password longer than 14 characters. Also that some characters might cause trouble. If you are having problems, try change password to a short one with normal characters.


DataDirectory functionality

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\myAccess2007file.accdb;
Persist Security Info=False;


Network Location

Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=\\serverName\shareName\folder\myAccess2007f ile.accdb;

reza69
جمعه 15 دی 1391, 10:22 صبح
نمیدونم بازم همون حالت رو داره.
ولی وقتی کد رو به حالت زیر تغییر میدم ارور تغییر میکنه.

OleDbConnection constr = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\mydb.accdb;JetOLEDB:Databas e Password=""");

متن ارور:(شماره ایندکس تغییر میکنه به 73)

Format of the initialization string does not conform to specification starting at index 73.

par3eh
جمعه 15 دی 1391, 11:31 صبح
اینو امتحان کن

connectionString=@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\mydb.accdb;Persist Security Info=True"

reza69
جمعه 15 دی 1391, 14:39 عصر
اینو امتحان کن

connectionString=@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\mydb.accdb;Persist Security Info=True"

نه نشد بازم همون ارور رو میده.
میشه مراحل کار رو از اول مرحله به مرحله برام توضیح بدین.منظورم اینکه از اول روش ارتباط با بانک اطلاعاتی access رو میخوام.
لازمه کنترل ها رو با دیتاست به بانک وصل کنیم؟ اولش من وصل کردم بعد قطع کردم درهر صورت همین ارور رو میداد.