PDA

View Full Version : Sqlconnection



bluray
سه شنبه 26 مرداد 1389, 01:44 صبح
سلام
حتما تا موضوع رو خوندید گفتید تکراریه . اما اشتباه می کنید . من هرچی بالا و پایین رفتم نتونستم با این موجود نا محترم کار کنم .من وقتی خواستم در SQL ارتباط رو برقرار کنم از لیست کشوئی که موجود بود servername رو BLURAY-PC\SQLEXPRESS قرار دادم(یه لیت کشوئی بود .
خوب رفتم داخل و خلاصه در پنجره کوئیری نوشتم :
create database ehsan on(name=ehsan_db,filename=d:\ehsan_db.mds");
اونم زحمت کشید و ساخت .
رفتم داخل C# و در رویداد کلیک یک دکمه نوشتم :
string connectionstring="server=BLURAY-PC\\SQLEXPRESS;database=ehsan;uid=;pwd=";
SqlConnection con = new SqlConnection(connectionstring);
con.Open();
con.Close();
اما موقع کلیک روی دکمه می گه :
Login failed for user ''.
ضمنا اسم کامپیوترم bluray-PCهست اما در اون لیست کشوئی داخل SQl «بود و منم اون اسمی که بالا نوشتم رو انتخاب کردم دیگه .
ضمنا روی حالت windows authentication در SQl کار کردم و یوزر وپسوردی ست نکردم .

vandermond
سه شنبه 26 مرداد 1389, 02:25 صبح
خب بايد ببيني با يوزر و پس ميتوني وارد بشي (كه حتما نميتوني حداقل با اين يوزر و پس). احتمالا از يوزر sa مگه استفاده نميكني؟:متفکر:
اگه پسورد نزاشتي تو اون قسمت نصب دليل نميشه كه يوزر هم خالي بمونه. اون پسورد براي يوزر sa هستش.
در كل مشكلت همينه. برو ببين به خود SQL ميتوني وصل بشي با sa يا نه.
موفق باشي

csharpprogramer88
سه شنبه 26 مرداد 1389, 04:17 صبح
كانكشن استرينگ را به اينصورت بدست بيار .بعد از ساخت ديتابيس :
server explorer برو و روي نام بانكت راست كليك كن و properties را بزن و از اونجا محتويات connection string را كپي بگير و به اينصورت استفاده كن


con = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=database name;Integrated Security=True");

از اين كد هم ميتوني استفاده كني فقط نام ديتابيس را تغيير بده شايد كارت را راه بندازه

bluray
پنج شنبه 28 مرداد 1389, 09:54 صبح
من مشگل اتصالم به بانک اطلاعاتی با روش زیر حل شد
string connectionstring = "server=bluray-PC\\SQLEXPRESS;integrated security=sspi;uid=;pwd=;database=pbook";

SqlConnection connection = new SqlConnection(connectionstring);
اما یه سوال حیاطی :
الان این کد فقط رو سیستم من کار می کنه . اگه بخوام این برنامه روی سیستم دیگه ای کار کنه چی؟ الان سرور اسم کامپیوتر خودمه . اونجا چی بگذارم که روی تمام سیستم ها کار کنه و دیتا بیس pbook رو از درایو D:سیستم طرف بخونه ؟آخه نمی شه که به ازای هر کامپیوتر سورس برنامه تغییر کنه .
منظورمو که می گیرید؟

vandermond
پنج شنبه 28 مرداد 1389, 10:23 صبح
دوست عزيز
براي نام كامپيوتر كه شما به جاي اوني كه نوشتي يك نقطه بزار حله. براي محل ديتابيس هم اگه همينطوري كار كنه كه ... ولي ميتوني ديتابيست رو بزاري توي پوشه Debug كه توي پوشه bin هستش و بعد اينطوري آدرس بدي بهش:

|DataDirectory|\MyDB.mdf
به جاي MyDB.mdf اسم و پسوند ديتابيس خودت رو بزار

csharpprogramer88
پنج شنبه 28 مرداد 1389, 11:18 صبح
فایل دیتابیس را در پوشه bin/debug ذخیره کن و کانکشن استرینگ را تغییر بده
تو پروفایل من بگرد جواب خودتو میگیری

81579001
پنج شنبه 28 مرداد 1389, 11:28 صبح
سلام
برای راحتی کار
1 دیتابیس را از داخل سی شارپ بساز
2 در فولدر bin/debug قرار بده
3 این کد را وارد کن


con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" +
Application.StartupPath + @"\Database1.mdf;Integrated Security=True;User Instance=True";

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

bluray
پنج شنبه 28 مرداد 1389, 12:39 عصر
سلام به همه
جناب 81579001 کد شما ارور instance failure رو می ده
من دو تا فیل دیتابیسم که اسمشون pbook.mds , pbook_logهست رو کپی کردم تو همون مسیری که شما عزیزان گفتید . اما نمی دونم مقدار database رو چی ست کنم .جناب vandermond چیزی که شما گفتید ارور می ده .ضمنا با همین وضعیت که برنامه رو پابلیش می کنم ، باید فایل های دیتابیس هم در پوشه مقصد ایجاد بشه که روی سیستم های دیگه موقع نصب کپی بشه . اما ای اتفاق نمی افته . یعنی داخل پوشه Application Files که حاصل پابلیش برنامه هست ، هیچ فایلی مربوط به دیتابیس نیست

vandermond
پنج شنبه 28 مرداد 1389, 14:21 عصر
دوست عزيز
من كدي نگفتم كه خطا بده. اين يه بخش از كانكشن استرينگ بود.
اين سايت مخصوص اين كاره :
http://www.connectionstrings.com
اين ديگه كد:

Data Source=.\SQLExpress;Integrated Security=true; AttachDbFilename=|DataDirectory|\mydb.mdf;User Instance=true;

bluray
پنج شنبه 28 مرداد 1389, 14:33 عصر
نشد
این ارور رو می ده:
An attempt to attach an auto-named database for file C:\Users\bluray\Documents\Visual Studio 2008\Projects\phonebook\phonebook\bin\Debug\pbook. mds failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.
این کدی بود که نوشتم:

string connectionstring = "server=.\\SQLExpress ; Integrated Security=true ; AttachDbFilename=|DataDirectory|\\pbook;User Instance=true";
SqlConnection connection = new SqlConnection(connectionstring);
connection.Open();
آقا من برای درکش یه مقداری پیش زمینه ام ضعیفه .
یکی لطف کنه این فرمتی رو که من نوشتم ادیت کنه . یعنی با همین فرمت باشه .به کد زیر که تغییر کرد ارور جدیدی داد:

string connectionstring = "server=.\\SQLEXPRESS;Integrated Security=true;uid=;pwd=;Trusted_Connection=True;da tabase=|DataDirectory|\\pbook.mds";

Cannot open database "|DataDirectory|\pbook.mds" requested by the login. The login failed.
Login failed for user 'bluray-PC\bluray'.
فقط با کد زیر کار می کنه که اینم نمی شه روی کامپیوترهای دیگه ازش استفاده کرد(به دلیل مسیر دیتابیس)

string connectionstring = "server=.\\SQLEXPRESS;Integrated Security=sspi;uid=;pwd=;database=pbook";

قضیه این MDF که شما می گذارید برای پسوند چیه؟ من می گذارم MDS . یه کتاب دارم که اون همه جاش نوشته MDS . کتاب شاخی هم هست:Asp.net Programming with C# and sql server(Don Gpsselin)

vandermond
پنج شنبه 28 مرداد 1389, 14:56 عصر
توي كد دوم كه مشكل از يوزر و پسورد هست. اشتباه هستن (احتمالا اگه منظور شما اون يوزر اصلي باشه كه هنگام نصب پسورد رو ميگيره، بايد يوزرنيمش رو sa بزنيد و پسوردش اون چيزي كه هنگام نصب دادي(كه احتمالا خالي گذاشتي))
اما براي كد اولي. خب اين با Integrated Security تونسته وصل بشه ولي ميگه يك ديتابيس باهمين نام داري. اسمشو عوض كن درست ميشه. (اگه نميزاشت اسمشو عوض كني هم .... حالا برو اگه نشد بگو باز بگم چه كار كني)

bluray
پنج شنبه 28 مرداد 1389, 15:23 عصر
توي كد دوم كه مشكل از يوزر و پسورد هست. اشتباه هستن (احتمالا اگه منظور شما اون يوزر اصلي باشه كه هنگام نصب پسورد رو ميگيره، بايد يوزرنيمش رو sa بزنيد و پسوردش اون چيزي كه هنگام نصب دادي(كه احتمالا خالي گذاشتي))
اما براي كد اولي. خب اين با Integrated Security تونسته وصل بشه ولي ميگه يك ديتابيس باهمين نام داري. اسمشو عوض كن درست ميشه. (اگه نميزاشت اسمشو عوض كني هم .... حالا برو اگه نشد بگو باز بگم چه كار كني)

کد دومی رو uid=saقرار دادم ، هیچ فرقی نکرد . کد اولی رو هم رفتم به پوشه bin\debug و به اسم دیتابیس یه S اضافه کردم . بازم همون ارور رو داد . یعنی مشگلات همچنان برقراره .

pystar
پنج شنبه 28 مرداد 1389, 15:39 عصر
سلام
در قسمت server بجاي اينكه اسم كامپيوتر خودت يا مقصد رو بنويسي كافيه بجاش اين كد رو قرار بدي:

server=(local)
يا
server=localhost

bluray
پنج شنبه 28 مرداد 1389, 15:45 عصر
سلام
در قسمت server بجاي اينكه اسم كامپيوتر خودت يا مقصد رو بنويسي كافيه بجاش اين كد رو قرار بدي:

server=(local)
يا
server=localhost

نه این که برای قسمت اول مشکل بود که حل شده . قسمت دوم مشکل اینجاست که کد رو چه طوری تغییر بدم که روی همه سیستم ها عمل کنه؟ چند تا پست قبلی رو بخونی می فهمیم مشکلم کجاست . اینی که شما می گیی چاره اش نیست . یا حد القل تمام مشکل رو حل نمی کنه . خوب حالا اسم سیستم با این کار حل می شه اما مسیر دیتابیس چی؟

81579001
پنج شنبه 28 مرداد 1389, 17:20 عصر
سلام
دیتابیس رو با چی ساختی

bluray
شنبه 30 مرداد 1389, 10:22 صبح
سلام
این دفعه ، به اجبار مجبور شدم که دیتابیس رو درون خود C#بسازم . کارم راه افتاد . اما مشکلی که هیت اینه که وقتی برنامه نوشته شده رو روی یک سیستم دیگه می برم از ورژن بانک اطلاعاتی ایراد می گیره و می گه نمی تونه باز کنه . یه ارور طولانی می ده اما یه بخشی ازش می گه که :
this server supports version 612 and erlier . a downgrade path is not supported
یعنی چی ؟ یعنی حتما باید کامپیوتر مقصد این ورژن از SQLروش نصب باشه ؟ اینطوری که نمی شه . دات نت فرم ورک 3.5 رو هم که حتما باید روش باشه .
راستی چه طوری می شه این برنامه رو جوری پابلیش کرد که موقع نصب خودش نصب نشه و مسیر بخواد و..... . خیلی SETUP رو ضعیف انجام می ده .

81579001
شنبه 30 مرداد 1389, 11:42 صبح
سلام



این دفعه ، به اجبار مجبور شدم که دیتابیس رو درون خود C#‎‎‎‎بسازم .
قضیه اجبار نیست بستگی به کار برنامه ومهارت شما دارد
در این روش شما فقط یک دیتابیس دارید برای همان برنامه



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

موفق باشید

bluray
شنبه 30 مرداد 1389, 14:38 عصر
81579001 عزیز بیشتر توضیح بدی ممنون می شم . در مورد ایجاد ست آپ .

سوالات من بی جواب موند :
1-حتما کامپیوتر مقصد نیازمند SQLهست؟(هیمن ورژنی که من باهاش برنامه رو ایجاد کرده ام)>
2-برنامه من باید جوری باشه که بدون نیاز به هیچ چیزی ست آپ بشه (بدون نیاز به SQL <...).من فقط C# روی سیستم دارم و بسته کامل VS رو ندارم .

2-مشکل بعدی اینجاست که من توی برنامه که دیتا وارد می کنم و ثبت می کنم ، ثبت می شه و قابل جستجو هم هست . اما برنامه رو که می بندم و دوبار وارد محیط VSمی شم ، هرچی جستجو می کنم رکورد های ثبت شده رو پیداشون نمی کنم . یعنی انگار نه انگار که دفعه قبل ثبت شده اند . البته وقتی برنامه پابلیش شده رو ثت آپ می کنم ، اون این مشکل رو نداره .
3-من می خوام برنامه جوری باشه که هرکسی نصبش کرد بدون مشکل باهاش کار کنه و هی مشکل دیتابیس رو نداشته باشه .

pystar
شنبه 30 مرداد 1389, 15:08 عصر
سلام
خوب با این کد مشکل نام کامپیوتر مبدا و مقصد حل شد.

server=(local) // computer name

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


Initial Catalog=database name

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

integrated security=sspi or true

حالا پرسیدی باید sql رو سیستم مقصد نصب باشه یا نه؟
در جواب باید بگم که میشه اسکریپت نوشت که نخوای sql نصب بشه اما من حضور ذهن ندارم.در مورد نسخه sql هم که باید بهت بگم برای کارای برنامه نویسی معمولا از نسخه sqlserver msde یا همون develop edition استفاده میکنم که خودم به شخصه از همین ورژن استفاده میکنم. نرم افزار اینستال شیلد هم که نصب کننده هستش امکاناتی را در اختیارت قرار میده که موقع نصب اسکریپت بانک sql رو میخواد یعنی مسیر بانک. یه سری پیچیدگیها داره که دیگه نیاز به نصب sql رو سیستم مقصد نداری.

اما پیشنهاد من به شما : از نسخه sql msde استفاده کن و تو سیستم مقصد نصب کن و همون کدهای بالا رو که قطعا درسته (همیشه استفاده میکنم) استفاده کن.
سرت درد اومد ؟ :چشمک: عذر میخوام.

81579001
شنبه 30 مرداد 1389, 18:19 عصر
سلام
1و2- بله ولی برای حل آن باید هنگام ستاپ سازی براساس عکس ضمیمه عمل کنی
که در Properties پروژه ستاپ کلید Prereguisites را بزنید وبعد تیک Sql Server 2005 را بزنید
وتیک شماره 4 حتماً زده شود تا مسئله نصب هم حل شود
3- مهم نیست چون یک دیتا بیس دیگه می سازد که شما وارد آن می شوید و به دنبال اطلاعات آن هستید به آن اهمیت ندید و در همان محلی که دیتابیس را ساختید از آن اسفاده کنید
موفق باشید

bluray
شنبه 30 مرداد 1389, 19:13 عصر
سلام
1و2- بله ولی برای حل آن باید هنگام ستاپ سازی براساس عکس ضمیمه عمل کنی
که در Properties پروژه ستاپ کلید Prereguisites را بزنید وبعد تیک Sql Server 2005 را بزنید
وتیک شماره 4 حتماً زده شود تا مسئله نصب هم حل شود
3- مهم نیست چون یک دیتا بیس دیگه می سازد که شما وارد آن می شوید و به دنبال اطلاعات آن هستید به آن اهمیت ندید و در همان محلی که دیتابیس را ساختید از آن اسفاده کنید
موفق باشید

آقا این مورد چهار رو که می زنم 62تا ارور می ده

81579001
یک شنبه 31 مرداد 1389, 09:29 صبح
سلام
سی ارپ را کامل نصب کردید؟
موفق باشید

bluray
یک شنبه 31 مرداد 1389, 10:50 صبح
سلام
آره .
سی شارپ سی شارپ هست دیگه . کامل و غیر کاملش چیه؟ من کلا برای نصب این جور برنامه ها بدون در نظر گیری فضا ، کاملا با دست باز همه موارد رو تیک میزنم :لبخند: