PDA

View Full Version : خطا در اتصال به بانک



راحیل مهربان
دوشنبه 13 بهمن 1393, 21:59 عصر
سلام دوستان
وقت همگی بخیر

من برنامم رو با زبان سی شارپ در Visual Studio 2010 نوشتم. بانک برنامه رو هم داخل خود ویژوال طراحی کردم.
یک مشکلم اینه که با هربار اجرا کردن برنامه اطلاعات بانکم میپره که البته یکی دوتا از دوستان گفتن که اگه از دیباگ برنامه اجرا کنم این مشکل رو دیگه ندارم.
مشکل بزرگترم اینه که الان که از برنامه ستاپ گرفتم و رو سیستم خودم دارم تست میکنم، موقع ثبت رکورد در بانک خطا میده که خطاش هم دقیقا جایی هست که کانکشنم رو باز میکنم و کوئری Insert رو اجرا میکنم.
دوستان کسی میتونه کمکم کنه. ممکنه اشکال کار از کانکشن استرینگم باشه. کانکشن استرینگم به این صورته:
Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\test.mdf;Integrated Security=True;User Instance=True

ممنون میشم اگه کمکم کنید.

mrprestige
دوشنبه 13 بهمن 1393, 22:34 عصر
سلام دوستان
وقت همگی بخیر

من برنامم رو با زبان سی شارپ در Visual Studio 2010 نوشتم. بانک برنامه رو هم داخل خود ویژوال طراحی کردم.
یک مشکلم اینه که با هربار اجرا کردن برنامه اطلاعات بانکم میپره که البته یکی دوتا از دوستان گفتن که اگه از دیباگ برنامه اجرا کنم این مشکل رو دیگه ندارم.
مشکل بزرگترم اینه که الان که از برنامه ستاپ گرفتم و رو سیستم خودم دارم تست میکنم، موقع ثبت رکورد در بانک خطا میده که خطاش هم دقیقا جایی هست که کانکشنم رو باز میکنم و کوئری Insert رو اجرا میکنم.
دوستان کسی میتونه کمکم کنه. ممکنه اشکال کار از کانکشن استرینگم باشه. کانکشن استرینگم به این صورته:
Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\test.mdf;Integrated Security=True;User Instance=True

ممنون میشم اگه کمکم کنید.

سلام وقت بخیر دوست عزیز ، اینکه میفرمایید اطلاعات بانک میپره بخاطر ایا قسمت قضیه هست ( |DataDirectory| ) به این دلیل که شما بانک رو از پوشه پروژه داری میخونی و قتی بانک نوی پوشه پروژه یا همون ( |DataDirectory| ) باشه چون از رم میخونه و از اونجایی رم حافظه موقت بحساب میاد اطلاعات بانک شما با یکبار خارج شدن از برنامه میپره ، بنظرم شما از نوار منوی بالا گزینه Data سپس Add new Data source رو بزنید کادری نمایش داده می شه بعد از دوبار که next کردی دکمه new connection رو بزن کادری باز میشه طبق همین عکسی که فرستادم به ترتیب 1- نام کامپیوتر 2-نام پایگاه داده انتخاب میکنی
128141

mrprestige
دوشنبه 13 بهمن 1393, 22:43 عصر
بازم بعد از اون وقتی okکردی روی علامت مثبت ( با فلش مشخص کردم ) کلیک کن متنی که ظاهر میشه رو انتخاب و کپی کن این متن میشه همون کانکشن استرینگت . این یکی از ساده ترین راه حل شناسوندن بانک sql به #C هست


128143



امیدوارم موفق باشید .

راحیل مهربان
سه شنبه 14 بهمن 1393, 08:06 صبح
سلام
ممنون از توضیحاتتون.
باشه این کار رو انجام میدم. با این نوع انتخاب بانک آشنا هستم.
مشکل بزرگم سر ستاپ گرفتنه. اینکه وقتی ستاپ گرفتم و روی یک سیستم دیگه نصب کردم. برنامه بدون مشکل ایجاد میشه؟ کانکشن استرینگش مشکلی نداره؟

mrprestige
سه شنبه 14 بهمن 1393, 09:00 صبح
سلام
ممنون از توضیحاتتون.
باشه این کار رو انجام میدم. با این نوع انتخاب بانک آشنا هستم.
مشکل بزرگم سر ستاپ گرفتنه. اینکه وقتی ستاپ گرفتم و روی یک سیستم دیگه نصب کردم. برنامه بدون مشکل ایجاد میشه؟ کانکشن استرینگش مشکلی نداره؟

اون زمان که از کانکشن شما ایراد میگرفت بخاطر این بود که برنامه از پوشه پروژه مربوط به سیستم شما اجرا میشد و وقتی میخواستید روی یک سیستم دیگه اجراش کنید چون بانکتون نسبت آدرس سیستم شما ذخیره شده این خطا رو میداد ( امیدوارم تونسته باشم منظورم رو متوجه شده باشید ) بخاطر همین این روشی که خدمتتون عرض کردم رو اجرا کنید انشاا... مشکلی ندارید فقط قبل از اینکه ستاپ بگیرید تو اون قسمت نرم افزار هایی به کاربر پیشنهاد میکنید حتما تیک مربوط به sql یادتون نره .

موفق باشید.

bazikadeh
سه شنبه 14 بهمن 1393, 12:09 عصر
ببخشید ولی فکر نکم ایراد از اون باشه ... درست شد مشکلتون ؟
-------------------------
شما کانکشنتون را اینطوری بزارین

Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|test.mdf;Integrated Security=True;User Instance=True
ببینید باز هم ایراد داره ؟

راحیل مهربان
سه شنبه 14 بهمن 1393, 15:47 عصر
ببخشید ولی فکر نکم ایراد از اون باشه ... درست شد مشکلتون ؟
-------------------------
شما کانکشنتون را اینطوری بزارین

Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|test.mdf;Integrated Security=True;User Instance=True
ببینید باز هم ایراد داره ؟


سلام
حقیقتش من تازه میخوام برم خونه. هنوز هیچ کدوم رو فرصت نکردم تست کنم. نه راه حل شما رو و نه راه حل جناب mrprestige (http://barnamenevis.org/member.php?338119-mrprestige) رو.
منظورتون اینه که اشکال کار تو \\ ها هستش؟ ولی آخه ثبت تو بانک انجام میشه

راحیل مهربان
سه شنبه 14 بهمن 1393, 17:45 عصر
در رابطه با راه حل آقای mrprestige (http://barnamenevis.org/member.php?338119-mrprestige) :
من از همون مسیر Data / Add New Data Source... رفتم منتهی بعد از دو تا Next مستقیما عکس دومی که گذاشتین رو میده. من هم کانکشن استرینگم رو از همینجا برداشتم. به خاطر این نیست که من بانکم رو داخل خود ویژوال طراحی کردم؟
ممنون میشم اگه راهنمایی کنید.


در رابطه با راه حل شما(bazikadeh (http://barnamenevis.org/member.php?229893-bazikadeh)) : منظورتون اینه که \\ رو بردارم فقط؟

mrprestige
سه شنبه 14 بهمن 1393, 17:59 عصر
سلام ، اولا اینکه شما اول یکی از راه حل ها رو امتحان کنید بعد اگه نتیجه نگرفتید برید سراغ بعدی و در رابطه با سوالی از بنده پرسید در پاسخ باید بگم نه ، فرقی نمیکنه چون شما دارید از SQL Express خود ویژوال استفاده میکنید ، لطفا الان شما به اینو بگید وقتی اون کانکشن استرینگ رو کپی کردی تو برنامت بازم خطا میده؟

راحیل مهربان
سه شنبه 14 بهمن 1393, 18:14 عصر
اول راه حل شما رو خواستم تست کنم که نشد. مسیری که شما گفتین رو رفتم . از قسمت new Connection اول باید یه DataStource انتخاب کنم. کدومش رو انتخاب کنم؟
Micriosoft SQL Server
Micriosoft SQL Server Compact 3.5
Micriosoft SQL Server Database File

راحیل مهربان
سه شنبه 14 بهمن 1393, 18:15 عصر
از آخری باید استفاده کنم؟
چیزی که از توضیحاتش متوجه شدم ، فکر میکنم این رو باید استفاده کنم.

mrprestige
سه شنبه 14 بهمن 1393, 18:41 عصر
از آخری باید استفاده کنم؟
چیزی که از توضیحاتش متوجه شدم ، فکر میکنم این رو باید استفاده کنم.

دقیقا ، چون داری از Express استفاده میکنی

راحیل مهربان
سه شنبه 14 بهمن 1393, 18:42 عصر
اون بالا متوجه شدم که از اولی استفاده کردین.
تو ServerName چهار مورد رو تست کردم :
.
local
.\SQLEXPRESS
BABA-PC\SQLEXPRESS

دو تای آخر جواب میدن. منتهی اسم بانکم رو نمیاره. فقط اسم بانکی که تو خود SqlServer طراحی کردم رو نشون میده یه اضافه بانک های خود اس کیو ال.
----------------------
گیج شدم میشه راهنماییم کنید. الان بانکی که من تو ویژوال طراحی کردم کجاست پس؟

راحیل مهربان
سه شنبه 14 بهمن 1393, 18:56 عصر
از آخری استفاده کردم.
بانکم رو هم از پوشه دیباگ برنامم برداشتم. تستش هم کردم مشکلی نداشت. حالا Connection String رو برداشتم و گذاشتم تو کدم. منتهی موقع ثبت داره خطا میده. خطا هم از قسمت باز کردن کانکشن هستش.
یه سوال، مراحل بالا رو تا اخر برم؟ قبلا رفته بودم. الان که از این روش رفتم از دوباره هم تا آخر رفتم مرحله Add New Data source رو

mrprestige
سه شنبه 14 بهمن 1393, 18:58 عصر
آخه حواسم نبود داری از EXpress استفاده میکنی .

ببین (Ctrl+Alt+S) رو بزن توی تب Server Explorer اصلا ببین جدولت بالا اومده این همه داری تلاش میکنی

خطا رو بزارید ببینم .
نه لازم نیست تا آخرش بری

mrprestige
سه شنبه 14 بهمن 1393, 19:08 عصر
معلومه دوسته عزیز دارید چی کار میکنید:لبخندساده:؟؟ خب شما با این کار که دوباره باید بری کانکشن رو دربیاری :متعجب: خب اول جابجایی رو انجام میدادی حالا بعدش میرفتی سراغ کانکشن استرینگ . بعدم دیگه لازم نبود مراحل رو تا آخر برید

الان شما به من اینو بگید " آیا جدولی در Server Explorer آمده ؟؟ "

راحیل مهربان
سه شنبه 14 بهمن 1393, 19:16 عصر
نه، دیگه واقعا خودم هم نمیدنم دارم چه کار میکنم...........
_______________________________________
این خطا رو میده:
An attempt to attach an auto-named database for file D:\Project\test\bin\Debug\bin\Debug\test.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.

راحیل مهربان
سه شنبه 14 بهمن 1393, 19:29 عصر
بله جدول اومده. حتی تو یکیشون یک رکوردی که از قبل ثبت کردم هم وجود داره.

mrprestige
سه شنبه 14 بهمن 1393, 19:49 عصر
بله جدول اومده. حتی تو یکیشون یک رکوردی که از قبل ثبت کردم هم وجود داره.

عرض کردم خدمتتون بخاطر اینه که اول کانکشن رو بدست آوردی بعد پروژتو جابجا کردی . اگه از همون اول با خوده نرم افزار Sql درست میکردی جدولتو الان این داستان هارو نداشتی خودمم گیج شدم الان چون در عین حال دارم مشکل یه بنده خدای دیگه رو حل میکنم

راحیل مهربان
سه شنبه 14 بهمن 1393, 20:01 عصر
میبخشید، حق با شماست.
من تو خود Sql هم بانکم رو ایجاد کردم.
اگه نیازه که از همونجا میارم. این مشکلات حل میشه اون وقت؟ مثل همون راه حلی که ابتدا گفتین پیش برم دیگه؟

mrprestige
سه شنبه 14 بهمن 1393, 20:17 عصر
نه خواهش میکنم من بخاطر خودتون عرض کردم دوباره زحمتت زیاد میشه بله همون روندی که عرض کردم

راحیل مهربان
سه شنبه 14 بهمن 1393, 20:29 عصر
تو مرحله ی Data Source Configuration Wizard انتهای صفحه یه چک باکس هست با این عنوان:
Enabel local databae Caching
این چی هست؟ تیک زدن و نزدنش چه فرقی داره؟

mrprestige
سه شنبه 14 بهمن 1393, 20:39 عصر
کدوم مرحله ش ؟؟؟ ببیننید تا همون جایی عرض کردم پیش برید و بعد Finish رو بزنید دیگه ادامه (Next ) ندید و فقط همون چیزایی که گفتم جلو برید لطفا .

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

احتمالا شما از VS2010 استفاده میکنید

راحیل مهربان
سه شنبه 14 بهمن 1393, 21:14 عصر
تا همونجا که گفتین رو رفتم ، دیگه ادامه ندادم.
بله از VS2010 استفاده میکنم.
فعلا که رانش کردم درست شد . ستاپ هم بگیرم ببینم درست میشه یا نه. امیدوارم درست بشه.

mrprestige
سه شنبه 14 بهمن 1393, 21:18 عصر
موقع ستاپ گیری شما برنامه های پیشنهادی رو هم تیک میزنید دیگه

راحیل مهربان
چهارشنبه 15 بهمن 1393, 06:54 صبح
سلام
منظورتون از برنامه های پیشنهادی چیه؟
ببینید من الان ستاپ گرفتم. برنامه رو سیستم خودم داره اجرا میشه. خب من رو سیستمم همه نرم افزاری نصبه. بانک هم حاضره.

سوالم اینه، الان این برنامه رو هر سیستم دیگه ای هم جواب میده؟ موقع ستاپ گرفتم هیچ جا بانکم رو انتخاب نکردم. فقط همون ابتدا فایل های پوشه دیباگ رو انتخاب کردم. تو مرحله آخر هم برنامه های مورد نیاز رو که برای من دات نت 4 ، Windows Installer 3.1 و Sql Server 2008 Express هستش رو انتخاب کردم. یعنی تو همون فایل های دیباگ جایی ساختار بانکم ذخیره شده؟

یه مشکل دیگه اینه که من تو پوشه دیباگ برنامم یه پوشه Image دارم که موقع ستاپ گیری ، همون ابتدا وقتی پوشه دیباگ رو انتخاب میکنیم این پوشه رو هم انتخاب کردم. ولی الان تو برنامه نشونشون نمیده.
میشه در مورد این دو تا مشکل راهنماییم کنید؟

راحیل مهربان
چهارشنبه 15 بهمن 1393, 07:15 صبح
یه اشکال دیگه هم دارم اینه که :
من تو یه مرحله کوئری Insert رو با ExecuteNonQuery() اجرا میکنم. تا اونجایی که من از توضیحات این تابع متوجه شدم با اجرا شدنش آیدی سطری مربوطه رو برمیگردونه. البته توضیح دقیق ویژوال برای این تابع اینه:
returns the number of rows affected
چیزی که من از این جمله گرفتم همون بالایی بود.
حالا مشکلم اینه که این تابع هر بار که اجرا میشه 1 برمیگردون. با اینکه من مثلا دهمین رکورد رو Insert کردم ولی باز 1 رو برمیگردونه.
حالا وقتی تو مرحله بعد میخوام این رکوردی که تازه درج کردم رو ویرایش کنم(از این خروجی برای Id جدولم استفاده کردم) همش میره همون رکورد اول رو تغییر میده.
من اشتباه متوجه شدم خروجی این تابع رو یا اشکال جای دیگه هستش؟

محمد آشتیانی
چهارشنبه 15 بهمن 1393, 09:15 صبح
سلام
returns the number of rows affected یعنی تعداد سطرهایی که با اجرای کوئری شما تاثیر پذیرفتن ، ربطی به آیدی رکورد نداره




موفق باشید

راحیل مهربان
دوشنبه 27 بهمن 1393, 17:36 عصر
سلام دوباره
من برنامم رو تغییر دادم و اجرا گرفتم که خوشبختانه اشکالی نداشت.
حالا وقتی ستاپ میگیرم و برنامه رو اجرا میکنم، اطلاعات داخل بانک رو نشون میده ولی چیزی ثبت نمیکنه. انگاری که readonly شده. یه جا خوندم که بانک رو نباید تو "Program Files" گذاشت برا اینکه دسترسی write نداره و میشه تو App Data گذاشت. ولی چطوری این کارو موقع ستاپ گرفتن انجام داد رو نمیدونم. در ضمن Connection String برنامم چطور میشه؟