PDA

View Full Version : مشکل در ورود داده ها به SQL EXPRESS



s4lish
چهارشنبه 13 دی 1391, 10:44 صبح
با سلام. خیلی وقت بود وقت نکرده بودم به این سایت پر محتوا بیام.
اول اینکه کاش یه تاپیک اصلی درست می کردید و همه بچه ها تو اون پست مشکلات و مسائلشونو مطرح می کردند و از افزودگی پست ها جلوگیری میشد.

حالا در خصوص مشکلم اینکه یه مشکلی پیش اومده در خصوص انتقال اطلاعات تو دیتابیس خود ویژوال اینه که من نمی تونم اطلاعات رو وارد دیتابیسش کنم ولی می تونم داده هارو select کنم.. در خصوص ورود اطلاعات وقتی یک گرید ویوو تو برنامه قرار میدم بعد از دستور وارد کردن اطلاعات توی گرید ویو نشون میده ولی توی دیتا بیس چیزی وارد نمیشه. با این حال وقتی من همین دستورات رو روی دیتابیس SQL server 2008 فقط با تغییر string اتصال اعمال می کنم به راحتی داده ها وارد دیتابیس میشن..
لطفا راهنمایی بفرمائید خیلی رو مخم رفته.
با تشکر

Salah Sanjabian
چهارشنبه 13 دی 1391, 10:55 صبح
سلام . هیچ خطایی بهت نمیده؟ breakpoint ، call stack اینا رو باید بتونی ازش استفاده کنی . کدت رو بذار تا دوستان بهتر بتونن راهنمایی کنن

mofid002006@gmail.com
چهارشنبه 13 دی 1391, 11:07 صبح
توي ديتابيس اطلاعات اضافه ميشه اما هردفه که برنامه رو از ويژوال استوديو ران مي کني ديتابيس اوليه جايگزين اون ميشه
اول يه کپي از ديتابيس رو توي پوشه ي bin قرار بده بعد از این کار باید بری توي ويژوال استوديو ، توی قسمت Solution Explorer روی دیتابیس راست کلیک کن و گزینه ی properties رو انتخاب کن و ویژگی Copy to Output Directory رو به Do Not Copy تغییر بده
ایشالا که حل میشه

s4lish
چهارشنبه 13 دی 1391, 11:08 صبح
نه اصلا خطا نمیده و حتی میگم داده هارو وارد میکنم و تایید میکنه ولی بعدش تو دیتابیس چیزی نیست..جالب اینجاست وقتی گرید ویوو قرا میدم داده های از قبل وارد کرده از داخل پایگاه داده رو نشون میده و حتی بعد از ورود اطلاعات از برنامه اونهارو هم نشون میده اما اونایی رو که از تو برنامه وارد کردم دیگه تو دیتابیس وارد نمیکنه.
چون من از کلاس های متعددی استفاده کردم دقیقا کجای کدم رو وارد کنم آخه !؟

توی کلاس دسترسی که درست کردم این تابع اتصال به پایگاه داده است.
{
string cs = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\dbe.mdf;Integrated Security=True;User Instance=True;";
cs = string.Format(cs, this.DBName);
con.ConnectionString = cs;
con.Open();
}

اینم یه کلاس دیگه است جهت وارد کردن اطلاعات


public void Add()
{
da.connect();
string sql = "insert into clientsiteweb(nwebsite,namecus,familycus,tel,about ,dnames,passdomain,passhost,passmanager,adress,ema il,id)values(N'{0}',N'{1}',N'{2}',N'{3}',N'{4}',N' {5}',N'{6}',N'{7}',N'{8}',N'{9}',N'{10}',N'{11}')";
)";
sql = string.Format(sql, this.nwebsite, this.namecus, this.familycus, this.Tel, this.about, this.dnames, this.passdomain,this.passhost,this.passmanager,thi s.adress,this.email,this.id);
da.docommand(sql);
da.Disconnect();
}

و در نهایت این تابع جهت اجرای دستورات روی دیتابیس


public void docommand(string sql)
{

cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}

ور در آخر هم کانکشن اتصال رو با تابع con.close() می بندم البته.خیلی بدیهی و شفافه
این برنامه گفتم روی دیتابیس sql express کار میکنه فقط توی sql express این مشکل رو دارم

mofid002006@gmail.com
چهارشنبه 13 دی 1391, 11:13 صبح
پس حتما راه حل من که بالا گفتم رو انجام بده

s4lish
چهارشنبه 13 دی 1391, 11:39 صبح
پس حتما راه حل من که بالا گفتم رو انجام بده

چشم حتما الان انجام میدم..مرسی واقعا

s4lish
چهارشنبه 13 دی 1391, 14:04 عصر
فقط یه سوال...من طبق راهنمایی های شما آقای mofid002006@gmail.com (http://barnamenevis.org/member.php?236933-mofid002006-gmail.com)عمل کردم و مشکلم برطرف شد خدارو شکر.

فقط الان اینکه دیتابیس رو که کپی کردن تو فولدر bin/debuge بعدش من اون رو باید به پایگاه داده اتصال بدم درسته ؟! چون انگار این یه دیتابیس دیگه حساب میشه.
بعد از اینکه اتصال میدم یک دیتابیس دیگه ایجاد میشه که آخر فرمتش عدد یک گذاشته به این صورت در مثال بنده dbe.mdf1 میخواستم بدونم این یعنی چه و اینکه من دیتابیس قبلی رو پاک کردم مشلکی پیش نمیاد که ؟!

mofid002006@gmail.com
شنبه 16 دی 1391, 09:20 صبح
نه نیازی به پاک کردن دیتابیس قبلی نیست
همچنین نیازی به برقراری ارتباط دوباره نیست با همون کانکشن استرینگ که قبلا نوشتین می تونین بهش وصل بشین
درواقع به غیر از کپی کردن دیتابیس ، نیاز هیچ تغییری توی برنامه ندارین