PDA

View Full Version : مشکل با دیتابیس



mojtaba00
پنج شنبه 10 دی 1388, 13:29 عصر
سلام، ماشاالله انقدر تاپیک زیاده که آدم نمیدونه کجا باید بحث رو شروع کنه.
من یه مشکلی دارم. من وقتی با دیتابیس کار می کنم و وقتی داده ای رو درج میکنم، به صورت موقت درج میشه ، یعنی وقتی از برنامه خارج میشم، اون داده ها دیگه تو دیتابیس نیستند.

هم با sqlcommand کار کردم هم با typed datasets و هم با linq.
قبلا هم این مشکل رو داشتم و وقتی ویندوز رو عوض کردم این مشکل حل شد. ولی الآن تازه ویندو نصب کردم.
لطفا کمک کنید. تمام دستورات هم درسته، من هم از msdn و هم از اینترنت کمک گرفتم که نکنه یه وقت یه اشتباه کوچیک کرده باشم ولی همه چی درسته. فقط وقتی برنامه رو می بندی اطلاعات تو دیتابیس نیست.

با تشکر.

مهدی رحیم زاده
پنج شنبه 10 دی 1388, 14:09 عصر
میشه یک نمونه از برنامه تون رو بزارید اینجا ؟
شاید بشه مشکل رو حل کرد.

FastCode
پنج شنبه 10 دی 1388, 14:25 عصر
فکر کنم دارید از transaction استفاده میکنید و بدون commit کردن برنامتون رو میبندید.

mojtaba00
پنج شنبه 10 دی 1388, 15:55 عصر
میشه یک نمونه از برنامه تون رو بزارید اینجا ؟
شاید بشه مشکل رو حل کرد.
این یه مدل با Linq :


DataClasses1DataContext db = new DataClasses1DataContext();

Book book = new Book();
book.author = textAuthor.Text;
book.name = textBook.Text;
book.publisher = textPublisher.Text;
book.ISBN = textISBN.Text;
book.yearPublished = comboBox1.SelectedIndex;
book.subject = 1;
db.Books.InsertOnSubmit(book);

try
{
db.SubmitChanges();
MessageBox.Show("مشخصات کتاب جدید ثبت شد");
}
catch{

MessageBox.Show("در هنگام ثبت کتاب خطایی رخ داده است.");
}


این هم یه نمونه به روش قدیمی :


using (SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Library.mdf;
Integrated Security=True;User Instance=True"))
{
con.Open();
SqlCommand cmd = new SqlCommand(@"insert into Books(name, author, publisher, ISBN, yearPublished, subject)
values(@name, @author, @publisher, @ISBN, @year, @subject)", con);
cmd.Parameters.AddWithValue("@name", textBook.Text);
cmd.Parameters.AddWithValue("@author", textAuthor.Text);
cmd.Parameters.AddWithValue("@publisher", textPublisher.Text);
cmd.Parameters.AddWithValue("@ISBN", textISBN.Text);
cmd.Parameters.AddWithValue("@year", comboBox1.SelectedIndex);
cmd.Parameters.AddWithValue("@subject", 1);

try
{
cmd.ExecuteScalar();
MessageBox.Show("مشخصات کتاب جدید ثبت شد");
}
catch { MessageBox.Show("در هنگام ثبت کتاب خطایی رخ داده است."); }
finally
{
cmd.Dispose();
cmd = null;
}
}

mojtaba00
پنج شنبه 10 دی 1388, 16:28 عصر
حالا تازه جالبش هم اینه که وقتی این دیتابیس درون دیتابیس های خود sql server ساخته بشه( مثلا توی server explorer روی Data Connectiions کلیک راست کنی و سپس گزینه Create New Sql Server Database رو بزنی) این کد هایی که نوشتم درست کار می کنه. ولی مشکل اونجا پیش میاد که تو Solution Explorer از Add new Item -> Server Based Database استفاده می کنم.

فکر کنم یه خورده گیج کننده بود ولی چه کنم که منم گیج شدم.

moharrami
شنبه 19 دی 1388, 17:10 عصر
نکنه triggerای دارید که جلو insert رو میگیره؟

Amir Oveisi
شنبه 19 دی 1388, 17:28 عصر
در Solution Explorer بر روی فایل database راست کلیک کرده و سپس گرینه Cop To Destination Folder رو به Copy if newer ست کنید.

موفق باشید