PDA

View Full Version : سوال: مشکل Connenction string



keyvan_s89
جمعه 25 اسفند 1391, 12:17 عصر
من یه Windows App دارم مینویسم و میخوام برنامم تویه یه کامپیوتر دیگه هم کار کنه
کانکشنم اینه

objcon.ConnectionString = (@"Data Source=(Local)\SQLEXPRESS;AttachDbFilename=|DataDi rectory|\Library.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

با این تاپیک هم پیش رفتم. تویه کامپیوتر خودم مشکل نداره ولی تویه یه کامپیوتر دیگه ارور بانک میده
http://barnamenevis.org/showthread.p...A-%D9%86%D8%AA (http://barnamenevis.org/showthread.php?139529-%D9%86%D8%AD%D9%88%D9%87-%D8%B3%D8%A7%D8%AE%D8%AA-setup-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%A8%D8%A7-%D9%86%D8%B5%D8%A8-SqlServer-%D9%88-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA)
101471

این اروری هست که تویه کامپیوتر مقصد میده
این مسیری هم که نشون میده مسیریه که تویه کامپیوتر مبده دیتابیس اونجا بوده

Hamid_Nasr
جمعه 25 اسفند 1391, 13:03 عصر
میتونی کانکشن را توی فایل Config که کنار فایل اجرایی برنامه هست فرار بدی به شکل زیر :


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Connection" value="Data Source=(Local);Initial Catalog=DatabaseName;Integrated Security=True"/>
</appSettings>
</configuration>


بعد توی برنامه هر جا خواستی با دستور زیر بخونش :


System.Configuration.ConfigurationSettings.AppSett ings["Connection"];

نکته : قسمت های سبز رنگ را باید تنظیم کنی

keyvan_s89
جمعه 25 اسفند 1391, 13:09 عصر
میتونی کانکشن را توی فایل Config که کنار فایل اجرایی برنامه هست فرار بدی به شکل زیر :


<?

xmlversion="1.0"encoding="utf-8" ?>
<configuration>
<appSettings>
<addkey="Connection"value="Data Source=(Local);Initial Catalog=DatabaseName;Integrated Security=True"/>
</appSettings>
</configuration>


بعد توی برنامه هر جا خواستی با دستور زیر بخونش :


System.Configuration.ConfigurationSettings.AppSett ings[

"Connection"];


نکته : قسمت های سبز رنگ را باید تنظیم کنی

یعنی connection string تویه برنامم همون باشه که نوشتم ؟ همینو نوشتم error داد

keyvan_s89
جمعه 25 اسفند 1391, 18:24 عصر
کسی نمیدونه ؟

AliSaeedi_v
جمعه 25 اسفند 1391, 19:42 عصر
سلام.این تابع اسامی کلیه سرور هایی که روی یه سیستم نصبه رو برمیگردونه و داخل یه لیست هست...
public List<string> myserver()
{
List<string> servers = new List<string>();
// Retrieve the enumerator instance and then the data.
var instance = SqlDataSourceEnumerator.Instance;
var table = instance.GetDataSources();

// Display the contents of the table.
foreach (DataRow row in table.Rows)
{
servers.Add(string.Format("{0}\\{1}", row[0], row[1]));
}
return servers;
}
حالا شما اگه یه سرور اس کیو ال روی اون سیستم داری اول این تابع رو اجرا کن و بریزش توی یه لیست .بعد اولین اندیس از لیست رو توی یه متغییر رشته ای ذخیره کن و توی کانکشن استرینگ قرار بده...فایل دیتا بیس هم باید بذاری توی پوشه دیباگ


list l2=myserver();
string servername=l2[1].tostring();

string cs = @"server=" + servername + ";database="+application.startuppath+"\databasename";trusted_connection=yes";

AliSaeedi_v
جمعه 25 اسفند 1391, 19:44 عصر
البته این خطا میگه قبلا یه دیتا بیس با این نام اتچ شده و وجود داره..نام دیتا بیست رو عوض کن ببین فرقی میکنه..

keyvan_s89
جمعه 25 اسفند 1391, 20:25 عصر
سلام.این تابع اسامی کلیه سرور هایی که روی یه سیستم نصبه رو برمیگردونه و داخل یه لیست هست...
public List<string> myserver()
{
List<string> servers = new List<string>();
// Retrieve the enumerator instance and then the data.
var instance = SqlDataSourceEnumerator.Instance;
var table = instance.GetDataSources();

// Display the contents of the table.
foreach (DataRow row in table.Rows)
{
servers.Add(string.Format("{0}\\{1}", row[0], row[1]));
}
return servers;
}
حالا شما اگه یه سرور اس کیو ال روی اون سیستم داری اول این تابع رو اجرا کن و بریزش توی یه لیست .بعد اولین اندیس از لیست رو توی یه متغییر رشته ای ذخیره کن و توی کانکشن استرینگ قرار بده...فایل دیتا بیس هم باید بذاری توی پوشه دیباگ


list l2=myserver();
string servername=l2[1].tostring();

string cs = @"server=" + servername + ";database="+application.startuppath+"\databasename";trusted_connection=yes";


من اینطوری نوشتم ولی ارور داد

SqlConnection objcon = new SqlConnection();
string cs = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\" + Application.StartupPath + "\\Library" + "Integrated Security=True;User Instance=True";
objcon.ConnectionString = cs;


اون تابع رو هم تویه SqlDataSourceEnumerator گیر داد

AliSaeedi_v
جمعه 25 اسفند 1391, 20:52 عصر
این کانکشن استرینگی که نوشتی رو یه بار دیگه بنویس و پسوند فایل پایگاه داده ات رو هم بنویس.
این قسمتی هم که بهش گیر داده برا اینه که using نکردی اون کتابخانه ای که این کلاس توش قرار داره...

keyvan_s89
جمعه 25 اسفند 1391, 21:12 عصر
این کانکشن استرینگی که نوشتی رو یه بار دیگه بنویس و پسوند فایل پایگاه داده ات رو هم بنویس.
این قسمتی هم که بهش گیر داده برا اینه که using نکردی اون کتابخانه ای که این کلاس توش قرار داره...
کانکشن استرینگ رو تویه تابع دوباره بنویسم ؟؟
یزینگش چیه ؟

AliSaeedi_v
جمعه 25 اسفند 1391, 21:16 عصر
نه منظورم این بود که اصلاحش کن و نام بانکت رو کامل بنویس...
اینی که الان نوشتی پسوند بانک رو ننوشتی(mdf).

keyvan_s89
جمعه 25 اسفند 1391, 21:19 عصر
نه منظورم این بود که اصلاحش کن و نام بانکت رو کامل بنویس...
اینی که الان نوشتی پسوند بانک رو ننوشتی(mdf).
به این لیست الان گیر میده
http://upload.tehran98.com/img1/9mloque4jreloqox3fh0.pngeloqox3fh0.pnghttp://upload.tehran98.com/img1/9mloque4jreloqox3fh0.png

AliSaeedi_v
جمعه 25 اسفند 1391, 22:46 عصر
باید از اول میگفتی برنامه نویسیت در چه سطحیه که بیشتر برات توضیح میدادم...بعد از return servers; نباید چیزی باشه..این دوخط باید بیرون از تابع باشه...
List l2=new list();
l2=myserver();
اینو امتحان کن

keyvan_s89
شنبه 26 اسفند 1391, 07:53 صبح
باید از اول میگفتی برنامه نویسیت در چه سطحیه که بیشتر برات توضیح میدادم...بعد از return servers; نباید چیزی باشه..این دوخط باید بیرون از تابع باشه...
List l2=new list();
l2=myserver();
اینو امتحان کن
اینم ارور میده راه ساده تری نیست ؟

AliSaeedi_v
شنبه 26 اسفند 1391, 11:58 صبح
برنامه تو بذار تا ببینم چیکار میشه کرد