PDA

View Full Version : سوال در مورد ارتباط برنامه با بانک اطلاعاتی



mmbarname
دوشنبه 21 آذر 1390, 15:23 عصر
سلام
من یه برنامه دارم که به بانک اطلاعاتی sql متصله ولی وقتی برنامه رو میبرم روی یه سیستم دیکه error میده و باید connection String‌اونو عوض کنم
مثلا اینو
SqlConnection con = new SqlConnection("Data Source=Masoud-PC;Initial Catalog=Taxi;Integrated Security=True");
تورو خدا باید برنامم رو تحویل بدم اگه کسی میدونه یه دنیا ممنون میشم.
باید چیکار کنم

gilas1368
دوشنبه 21 آذر 1390, 16:21 عصر
من همیشه از این استفاده می کنم

SqlConnection con=new SqlConnection ("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\database \\database.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
البته باید حتما DataBase توی آدرسی که گفتم وجود داشته باشه. من داخل پوشه database در داخل درایو C دیتا بیسم رو کپی گرفتم
توی سیستم مقصد هم توی همین درایو و داخل همین پوشه دیتابیس رو کپی می گیرم
واسه من به خوبی جواب میده

Masterhame
دوشنبه 21 آذر 1390, 16:30 عصر
در واقع مشکل شما توی قسمت قرمز رنگ رشته اتصالتون هست:

SqlConnection con = new SqlConnection("Data Source=Masoud-PC;Initial Catalog=Taxi;Integrated Security=True");

اگر نرم افزارتون فقط قرار روی یک سیستم اجرا بشه بهتره که بجای اسم کامپیوتر از کاراکتر نقطه ( . ) استفاده کنید.
منظورم از اجرا روی یک سیستم اینه که کاربرانی تحت شبکه وجود نداشته باشند.
از این کانکشن استفاده کنید:

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=Taxi;Integrated Security=True");

باید این نکته رو بگم که نقطه نماینده (همین سیستم یا همین سرور) هست.

در ارتباط با کانکشنی هم که دوستمون پیشنهاد دادن باید بگم که اون مربوط به زمانی هست که شما می خواهید از SqlExpress استفاده بکنید و کاربرد دائم و کامل نداره
البته رفع این روش هم میتونه رفع کننده مشکل دوستمون باشه

mmbarname
دوشنبه 21 آذر 1390, 16:36 عصر
میشه بانک اطلاعاتی رو بریزم تو مسیر خود برنامه و آدرسشو اونجا بدم اگه میشه بگین لطفا؟

Mahmoud Zaad
دوشنبه 21 آذر 1390, 17:22 عصر
آره میشه. باید به جای آدرس بنویسید:
|DataDirectory|\db.mdf

elena2007
دوشنبه 21 آذر 1390, 17:24 عصر
public SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\BookBank.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");


بانک اطلاعاتی بزارین تو پوشه debug پروژه . همین

ali reza mansoori 2
دوشنبه 21 آذر 1390, 17:30 عصر
دوستان واقعا دیگه مخم داغ کرده:عصبانی++:
100 مدل تا حالا کانکشن استرینگ دیدم و همه رو امتحان کردم و جواب نگرفتم
خواهش میکنم یه نمونه برنامه کوچک درست کنید تا از این سردرگمی خلاص بشم
فقط یه بانک درست کنید با یه جدول و اونو داخل یه فرم نمایش بدید(دیتا گرید) تا من مقادیر و بانکم رو جایگزینش کنم
در ضمن بانک رو با اس کیو ال 2008 آر 2 درست کردم و فقط با یوزر و پس خاصی میشه بهش دسترسی داشت
خواهشا مدیران محترم تایپیک رو حذف نکنن (خیلی ممنون)

gilas1368
دوشنبه 21 آذر 1390, 18:37 عصر
اینم برنامه ای که خواستین
یه دفترچه تلفن
پوشه دیتابیس رو توی درایو Cتون کپی بگیرید بعد برنامه رو اجرا کنین
کلمه کاربری : ict
رمز عبور : 88

ali reza mansoori 2
دوشنبه 21 آذر 1390, 19:47 عصر
خیلی ممنون از اینکه زجمت کشیدید و نمونه برنامه آپ کردید
ولی وقتی کلمه عبور و پسور رو وارد میکنم اخطار زیر نمایش داده میشه
در ضمن بانک رو هم نمیتونم اتچ کنم

gilas1368
دوشنبه 21 آذر 1390, 19:55 عصر
با عرض پوزش دیتابیس رو دوباره دانلود کنین
دیتابیس رو اشتباهی آپ کردم

ali reza mansoori 2
دوشنبه 21 آذر 1390, 20:11 عصر
بازم تشکر
خیلی عالی بود کارم رو راه میندازه
ولی الان همه میتونن بانک رو اتچ و اطلاعات اون رو بخونن
من روی خود برنامه SQL و بانکم رمز گزاشتم یعنی وقتی میخوام وارد SQL بشم باید یوزر و پس وارد کنم تا به بانکم دسترسی داشته باشم
داخل کانکشن استرینگی که شما تعریف کردید چیزی به عنوان یوزر و پس هم باید باشه
آیا میتونید همچین کاری انجام بدید
واقعا ممنون

Farshid007
دوشنبه 21 آذر 1390, 21:07 عصر
قابل ذکر است:
همیشه چک کنید ببینید ایا دیتا بیس تو جاش (مثلا تو درایو C)هست یا نه اگر نیست برای جلو گیری از خطا برنامه رو ببندید
اینجوری:
if (!System.IO.File.Exists(@"C://DatabaseName.mdf"))
{
if (MessageBox.Show("System Cannot Find DataBase Please Make Sure that the Data Base Exists at This Address:\n C://DatabaseName.mdf", "404 not found", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning) == DialogResult.Retry)
{
Form1_Load(sender, e);
}
else
{
this.Close();
Application.Exit();
}
}
اینجوری هم از خطا جلو گیری می شه هم یه خورده شبیه به برنامه با کلاس های خارجی ها میشه!:لبخند:
(:

gilas1368
دوشنبه 21 آذر 1390, 21:10 عصر
من تا حالا از این روش استفاده نکردم
ولی از جایی که اطلاعاتی اغلب مهم برای فرد داخل پایگاه ذخیره میشه ، من از رمزنگاری اطلاعات استفاده می کنم
حالا اگه user و Pass در اختیار یه اخلال گر فعال بیوفته میشه تقریبا مطمئن بود که اطلاعات لو نره

Masterhame
دوشنبه 21 آذر 1390, 23:48 عصر
بهترين شكل ConnectionString براي SQL2008 و مدلي كه شما مطرح كرديد چنين چيزي هست. به نظرم نياز به نمونه برنامه هم نداره
فقط يك مقدار توضيح براش مي نويسم كه به ازاي هر شرايطي خودتون بتونيد عوضش كنيد.

Data Source=MyServer;Initial Catalog=MyDataBase;Persist Security Info=True;User ID=MyUserName; pwd=MyPassword

MyServer: نام سرور يا نام كامپيوترتون
MyDataBase: اسم بانكتون
MyUserName: نام كاربري بانكتون
MyPassword: رمزي كه براي كاربرتون انتخاب كرديد

اينها مربوط به روشي هست كه شما مي خوايد با يك User از Userهاي داخلي خود SQL Server به بانكتون متصل بشيد.
اين روش بهترين يا راحت ترين نوع رشته اتصال براي اتصال به بانكهاي اطلاعاتي تحت شبكه هست.

ali reza mansoori 2
چهارشنبه 23 آذر 1390, 15:57 عصر
خیلی ممنون از همه
جناب Masterhame کجایی کانکشن استرینگی که شما نوشتید باید آدرس بانکم رو بدم
آیا باید شکل کانکشن استرینگ رو عوض کرد
من میخوام وقتی برنامه رو روی سیستم دیگه ای نصب کردم نیاز به نصب کامل SQL نباشه

ali reza mansoori 2
چهارشنبه 23 آذر 1390, 18:51 عصر
آقای gilas1368 شما بانکتون رو با چه ورژنی از نرم افزار SQL ساختید

mohsenm66
جمعه 23 دی 1390, 09:18 صبح
دوستان من هم همین مشکل را دارم ولی دیگه دارم کلافه میشم .لطفا یکی به داد من برسه :گیج:
من از sql server 2008 r2 استفاده کرده ام ولی نمیدونم روی کلاینت ها چرا برنامه اجرا نمیشه .
آیا باید روی کلاینت ها چیزی نصب بشه ؟

ali reza mansoori 2
جمعه 23 دی 1390, 15:24 عصر
یعنی کسی تا به حال همچین کاری رو انجام نداده
صورت مسئله خیلی ساده است
بانکم رو با SQL2008 طراحی کردم و برای اون یک کاربر تعریف کردم که فقط با این کاربر و پسوردش می تونه باز بشه و اونو از برنامه SQL2008 دیتچ کردم
حالا میخوام بدونم کانکشن استرینگ برای اتصال همچین بانکی به C#‎2010 به چه شکل باید باشه