• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

سوال در رابطه با اتصال به دیتابیس

dezchilds

Registered User
تاریخ عضویت
4 می 2009
نوشته‌ها
93
لایک‌ها
1
سلام دوستان من بسیار تازه کار هستم در ASP.NET و همین اولش هم به کلی مشکل برخوردم ، من دارم با C# کد نویسی پروژه سایتمو انجام میدم
کد:
 string connectionString = "Data Source=(127.0.0.1);" + "Initial Catalog=Database1;" ;

            SqlConnection conObj = new SqlConnection(connectionString);
            conObj.Open();
string commandText = "insert into works(title,vaziat) values('ali','delshad')";
SqlCommand cmdObj = new SqlCommand(commandText, conObj);

cmdObj.ExecuteNonQuery();
conObj.Close();


این کد ها رو ببینید با این کد ها به دیتابیسم وصل میشم دیتابیسم هم Sql هست و یوزر و پسورد نداره ولی وقتی برنامه رو اجرا میکنم به مشکل برمیخورم و این ارور رو دریافت میکنم
Sqlexception was unhandled by user code
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server
دوستان ممنون میشم راهنماییم کنید
 

Mr.4

همکار بازنشسته
کاربر فعال
تاریخ عضویت
12 آگوست 2008
نوشته‌ها
1,866
لایک‌ها
526
سن
95
محل سکونت
آسمانها و فراتر از آن
دوست عزیز مشکل شما توی کانکشن استرینگی هست که تعریف کردید

کد:
Data Source=.;Initial Catalog=Database1;Integrated Security=True
توی دیتا سورس اینا همش یه معنی رو میده از کوتاه ترین استفاده کنیم که راحت تر باشیم
کد:
.=(local)=127.0.0.1

یعنی این کد درست شماس

کد:
 string connectionString ="Data Source=.;Initial Catalog=Database1;Integrated Security=True";

            SqlConnection conObj = new SqlConnection(connectionString);
            conObj.Open();
string commandText = "insert into works(title,vaziat) values('ali','delshad')";
SqlCommand cmdObj = new SqlCommand(commandText, conObj);

cmdObj.ExecuteNonQuery();
conObj.Close();
نحوه کانکشن استرینگ ها درست به این شکله SQL Server 2008 Connection String Samples - ConnectionStrings.com
 

dezchilds

Registered User
تاریخ عضویت
4 می 2009
نوشته‌ها
93
لایک‌ها
1
سلام کاری که گفتید رو انجام دادم ولی بازم ارور میده
اصل برنامه رو پیوست میکنم یه نگاهی بهش بکنید
ممنون
 

فایل های ضمیمه

  • test.zip
    164.8 KB · نمایش ها: 14

Mr.4

همکار بازنشسته
کاربر فعال
تاریخ عضویت
12 آگوست 2008
نوشته‌ها
1,866
لایک‌ها
526
سن
95
محل سکونت
آسمانها و فراتر از آن
سلام کاری که گفتید رو انجام دادم ولی بازم ارور میده
اصل برنامه رو پیوست میکنم یه نگاهی بهش بکنید
ممنون

شما دارید تو پروژتون از اسکیول اکسپرس استفاده میکنید خوب دوست عزیز پس برای همین باید یه کلمه اسکیول اسکپرس جلوی نقطه اضافه کنید
کد:
Data Source=.\\sQLEXPRESS;AttachDbFileName=|DataDirectory|\Database1.mdf;Integrated Security=True;
 
Last edited:

dezchilds

Registered User
تاریخ عضویت
4 می 2009
نوشته‌ها
93
لایک‌ها
1
تغیر دادم ولی ارور جدیدی دریافت میکنم

An attempt to attach an auto-named database for file G:\New folder (6)\WebApplication1\WebApplication1\App_Data\/Database1.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.
 

Mr.4

همکار بازنشسته
کاربر فعال
تاریخ عضویت
12 آگوست 2008
نوشته‌ها
1,866
لایک‌ها
526
سن
95
محل سکونت
آسمانها و فراتر از آن
تغیر دادم ولی ارور جدیدی دریافت میکنم

An attempt to attach an auto-named database for file G:\New folder (6)\WebApplication1\WebApplication1\App_Data\/Database1.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.

دوست عزیز من این دستور رو بر اساس اسم دیتابیسی که داخل تاپیک گزاشته بودید نوشتم ولی اسم دیتابیش شما Database.mdf هست الان توی پروژتون دیدم Database1.mdf رو عدد یکش رو پاک کنید درست میشه
کد:
Data Source=.\\sQLEXPRESS;AttachDbFileName=|DataDirectory|\Database.mdf;Integrated Security=True;

در ضمن خطایی گیری کار سختی نیست ببنید خودش داره بهتون میگه A database with the same name exists
 

dezchilds

Registered User
تاریخ عضویت
4 می 2009
نوشته‌ها
93
لایک‌ها
1
سلام
تو سایت msdn نوشته بود باید User Instance=True; رو اضافه کرد به کانکشن استرینگ ، اضافه کردم درست شد . ممنون
 

dezchilds

Registered User
تاریخ عضویت
4 می 2009
نوشته‌ها
93
لایک‌ها
1
دوتا سوال دیگه دارم .

برای ورود به برنامه ام از افزونه های login مربوط به خود asp.net استفاده میکنم آیا میشه زمانی که شخصی میخواد وارد بشه در صورتی که وارد شد نام کاربریشو که در login باکس وارد میکنه در session ذخیره کنم ؟

من در جایی دیگه از برنامه ام از detailview برای اضافه کردن به بانک اطلاعاتی ام استفاده میکنم ، میخوام طوری باشه که وقتی رکوردی اضافه میشه فیلد time بانک اطلاعاتیم خود به خود زمان جاری رو بزنه چیکار باید بکنم ؟
 

Mr.4

همکار بازنشسته
کاربر فعال
تاریخ عضویت
12 آگوست 2008
نوشته‌ها
1,866
لایک‌ها
526
سن
95
محل سکونت
آسمانها و فراتر از آن
دوتا سوال دیگه دارم .

برای ورود به برنامه ام از افزونه های login مربوط به خود asp.net استفاده میکنم آیا میشه زمانی که شخصی میخواد وارد بشه در صورتی که وارد شد نام کاربریشو که در login باکس وارد میکنه در session ذخیره کنم ؟

من در جایی دیگه از برنامه ام از detailview برای اضافه کردن به بانک اطلاعاتی ام استفاده میکنم ، میخوام طوری باشه که وقتی رکوردی اضافه میشه فیلد time بانک اطلاعاتیم خود به خود زمان جاری رو بزنه چیکار باید بکنم ؟

شما وقتی از ممبرشیب استفاده میکنی با استفاده از دستور
کد:
User.Identity.Name
نیازی نیست شما دیگه با کد نویسی اسم کاربر رو سیو کنید این کار رو خود ممبرشیب انجام میده هرجا خواستید یوزر کاربر رو بگیریید دستور بالا رو بزنید

برای اون مورد دوم هم از دستور

کد:
DateTime.Now;

استفاده کنید که البته میشه سمت پایگاه داده هم این کار رو انجام داد ولی خارج از سواد بنده هست
 

dezchilds

Registered User
تاریخ عضویت
4 می 2009
نوشته‌ها
93
لایک‌ها
1
شما وقتی از ممبرشیب استفاده میکنی با استفاده از دستور
کد:
User.Identity.Name
نیازی نیست شما دیگه با کد نویسی اسم کاربر رو سیو کنید این کار رو خود ممبرشیب انجام میده هرجا خواستید یوزر کاربر رو بگیریید دستور بالا رو بزنید

برای اون مورد دوم هم از دستور

کد:
DateTime.Now;

استفاده کنید که البته میشه سمت پایگاه داده هم این کار رو انجام داد ولی خارج از سواد بنده هست

سلام و تشکر
اول اینکه اون روش دوم که برای بانک اطلاعاتی فرمودید رو پیدا کردم . این بود تو فیلدی که نوعش Datetime هست توی خصوصیت Default value or Binding اینو می نویسیم getdate() و خود به خود با ایجاد هر رکورد جدید زمان رو در فیلد میزنه .
ولی یه سوال دیگه حالا که با دستور User.Identity.Name نام کاربری شخص وارد شده رو بدست آوردم آیا میشه توی Gride view یه دکمه ای قرار بدم که بعد از کلیک روی اون اسم کاربر تو یکی از فیلد های بانک اطلاعاتی درج بشه ؟
 

Mr.4

همکار بازنشسته
کاربر فعال
تاریخ عضویت
12 آگوست 2008
نوشته‌ها
1,866
لایک‌ها
526
سن
95
محل سکونت
آسمانها و فراتر از آن
سلام و تشکر
ولی یه سوال دیگه حالا که با دستور User.Identity.Name نام کاربری شخص وارد شده رو بدست آوردم آیا میشه توی Gride view یه دکمه ای قرار بدم که بعد از کلیک روی اون اسم کاربر تو یکی از فیلد های بانک اطلاعاتی درج بشه ؟

خارج از گرید ویو هم بزارید میشه وقتی از کنترل داخل مثلا گرید استفاده میکنن که سعی میکنن اون رو داینامیک کنن نیازیی نیست که باتن رو تو گرید بزارید میشه گزاشت ولی نیاز نیست این کارو بکنید چون اونوقت مثلا شما 12-13 دکمه دارید که یک کا رو انجام میدن دلیلی به وجودش به نظر من نیست
 

dezchilds

Registered User
تاریخ عضویت
4 می 2009
نوشته‌ها
93
لایک‌ها
1
نه مثلآ ما یه تعداد رکورد داریم که تو گرید ویو نمایش داده میشه حالا من میخوام کنار هر رکورد یه کلید انتخاب باشه که بعد از انتخاب توسط کاربر نام کاربری در همون رکورد ذخیره بشه نه رکوردی دیگه . مثل خود دستور Delete مروبوط به گرید که وقتی کنار یه رکورد هست و ما روش کلیک میکنیم فقط همون رکورد رو حذف میکنه .
 

Mr.4

همکار بازنشسته
کاربر فعال
تاریخ عضویت
12 آگوست 2008
نوشته‌ها
1,866
لایک‌ها
526
سن
95
محل سکونت
آسمانها و فراتر از آن
نه مثلآ ما یه تعداد رکورد داریم که تو گرید ویو نمایش داده میشه حالا من میخوام کنار هر رکورد یه کلید انتخاب باشه که بعد از انتخاب توسط کاربر نام کاربری در همون رکورد ذخیره بشه نه رکوردی دیگه . مثل خود دستور Delete مروبوط به گرید که وقتی کنار یه رکورد هست و ما روش کلیک میکنیم فقط همون رکورد رو حذف میکنه .

ار میشه یه دکمه میزار توی تمپلت که داری باتن یه خاصیتی داره به اسم command name اون رو میزاری روی add یه خاصیت دیگه هم داره به اسم command argument اونم مثلان میزاری رو Id بعد توی پروپرتیز گرید ویو یه علامت رعد برق هست :یی به اسم event روی RowCommand دوتا کلیک میکنی
میری تو بعد یه if میزاری که اگه e.commanname="add" فلان دستورات انجام بشه قبلا هم تو دکمه دکمه ارگومنت رو گزاشته بودیم رو ایدی اینجا هم هرجا خواستیم هرکدوم از ارگومنت ها رو بگیریم مثلا نیم یا ایدی این حرفا میزنیم e.argument حالا این ارگومنت که تو دکمه مشخص کرده بودیم میاد ایجا جا گزاری میشه
 

dezchilds

Registered User
تاریخ عضویت
4 می 2009
نوشته‌ها
93
لایک‌ها
1
سلام کاری که گفتید کردم و از طریق منوی columns در پروپرتیز Grideview یه باتن فیلد اضافه کردم و خاصیه commandnameرو همون قرار دادم ولی خاصیت command argument نداشت ولی دکمه معمولی داره ولی نمیشه باهاش این کار رو کرد. چیکار باید کرد ؟ خاصیت command argument نداره
 

Mr.4

همکار بازنشسته
کاربر فعال
تاریخ عضویت
12 آگوست 2008
نوشته‌ها
1,866
لایک‌ها
526
سن
95
محل سکونت
آسمانها و فراتر از آن
سلام کاری که گفتید کردم و از طریق منوی columns در پروپرتیز Grideview یه باتن فیلد اضافه کردم و خاصیه commandnameرو همون قرار دادم ولی خاصیت command argument نداشت ولی دکمه معمولی داره ولی نمیشه باهاش این کار رو کرد. چیکار باید کرد ؟ خاصیت command argument نداره

پیشنهاد میکنم از مساله پایه تر دوست عزیز شروع کنید به برنامه نویسی

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

برای مثل شما میری تو کد های اچ تی امل تون که مربوط به گرید ویو هست

تگ </Columns> رو پیدا کنید

کد:
   <asp:TemplateField HeaderText="Seniority">
            <ItemTemplate>
                <asp:Button ID="Button1" runat="server" Text="Button" />
            </ItemTemplate>
        </asp:TemplateField>
اینو میزارید بالاش دکمه عادی میاد تو گرید ویو
 
بالا