PDA

View Full Version : سوال: برای ذخیره در بانک اطلاعاتی باید به این کد چی اضافه کنم؟



Atiyeh1370
جمعه 22 بهمن 1389, 14:06 عصر
سلام
من میخواستم تو تصویر با دکمه هایی که مشخص کردم بتونم رکورد حذف و اضافه کنم
البته این دکمه ها وقتی خصوصیت BindingSource مربوط به bindingNavigator1 را برابر projectsBindingSource قرار دادم کار کردند ولی خب وقتی فرم بسته میشه رکوردهایی که وارد کردم از بین میرن
البته خب معلومه چون واسش کدی ننوشتم!
کسی میدونه باید چی کار کنم؟ چه کدی بنویسم که اطلاعتم تو بانک اطلاعاتیم ذخیره بشه؟
در ضمن کد Form_load تصویر را هم گذاشتم


SqlConnection sqlcon = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=M:\\Project\ \C#\\Project\\Server\\Server\\Project.mdf;Integrat ed Security=True;Connect Timeout=30;User Instance=True");
SqlDataAdapter sqlda = new SqlDataAdapter();
sqlda.SelectCommand = new SqlCommand();
sqlda.SelectCommand.Connection = sqlcon;
sqlda.SelectCommand.CommandText = "select * from projects";
DataSet ds = new DataSet();
sqlda.Fill(ds, "projects");
DataView dv = new DataView(ds.Tables["projects"]);
dataGridView1.DataSource = dv;
//sqlda.Update (ds)

66219

man_iran
جمعه 22 بهمن 1389, 14:20 عصر
dv را استاتیک معرفی کن. اینطوری اطلاعات توش باقی می مونه

Atiyeh1370
جمعه 22 بهمن 1389, 15:06 عصر
ممنون از توجهتون
نمیدونم منظورتون را درست متوجه شدم یا نه! کدم را اینطوری تغییر دادم ولی بازم نشد!
لطفا بیشتر راهنماییم کنید
ممنون


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
namespace WindowsApplication2
{
publicpartialclassProjects : Form
{
public Projects()
{
InitializeComponent();
}
static DataView dv;
privatevoid Projects_Load(object sender, EventArgs e)
{
SqlConnection sqlcon = newSqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=M:\\Project\ \C#\\Project\\Server\\Server\\Project.mdf;Integrat ed Security=True;Connect Timeout=30;User Instance=True");
SqlDataAdapter sqlda = newSqlDataAdapter();
sqlda.SelectCommand = newSqlCommand();
sqlda.SelectCommand.Connection = sqlcon;
sqlda.SelectCommand.CommandText = "select * from projects";
DataSet ds = newDataSet();
sqlda.Fill(ds, "projects");
dv = newDataView(ds.Tables["projects"]);
dataGridView1.DataSource = dv;
//sqlda.Update (ds)
}
}
}

man_iran
جمعه 22 بهمن 1389, 15:29 عصر
گویا شما می خواید دو کار انجام بدید. 1- اطلاعات را توی بانک ذخیره کنید. 2- اطلاعاتی که توی بانک ذخیره می کنید توی دیتاگردویو هم نمایش داده بشن حتی اگر فرم را باز و بسته کنید.
برای اینکه اطلاعات را ذخیره کنید توی اون دکمه ذخیره، باید کد مربوط به insert را برای ذخیره سازی بنویسید. (اگر کد را نمی دونید بگید تا کامل براتون بنویسم)
برای اینکه اطلاعات همیشه نمایش داده بشن چندین راه دارید. شما می تونید از جایی که اطلاعات را می خونید آن را استاتیک کنید (مثلا همین دیتاست) بعد هر وقت اطلاعات به بانک اضافه کردید دیتاست خودتون را هم بروز کنید (سلکت از بانک) یا اینکه وقتی به بانک اطلاعات ارسال می کنید به دیتاست هم اطلاعات اضافه کنید.
روش دوم مناسب تره (البته روش های زیادی هست ولی بین دو روش بالا روش دوم مناسبتره)

Atiyeh1370
جمعه 22 بهمن 1389, 22:15 عصر
سلام
ممنون از توجهت
لطفا پیغام اولیم را دوباره بخون
من فقط میخوام اطلاعات تو Datagridview نمایش داده بشه و وقتی مثلا فرم را بست اطلاعاتی که (با دکمه های مشخص شده تو تصویر) وارد شده تو بانک اطلاعاتی ذخیره بشه
ببخشید من خیلی تازه کارم
اولین پروژمه
لطفا کمکم کن
اگه میشه با کد توضیح بده
اینجوری که گفتی نمیفهمم!!!!!!!!:خجالت:

man_iran
جمعه 22 بهمن 1389, 23:15 عصر
فکر کنم می خوای چنین کاری توی برنامه بکنی:
یه دیتاگردویو داری که کاربر میاد و اطلاعات را توی آن می نویسه و اگر خواست حذف کنه از دکمه ای که گذاشتی استفاده می کنه. تا حالا تمام کار توی برنامه بوده و چیزی توی بانک ذخیره نمی شه.
هر وقت هم از فرم خارج شد تمام اطلاعات توی دیتاگردویو را توی بانک ذخیره کنه.
درسته؟

Atiyeh1370
جمعه 22 بهمن 1389, 23:29 عصر
بله کاملا
میشه کمکم کنید
اگه میشه کدش را واسم بگید
شرمندم:خجالت:

man_iran
شنبه 23 بهمن 1389, 00:33 صبح
خب اگر قراره چنین کاری بکنید می تونید با استفاده از linq to sql این کار را بخوبی بکنید ولی چون من با linq to sql کار نکردم نمی تونم از لحاظ کد به شما کمک کند یه جستجو توی تالار بزنید مثال های زیادی گیرتون میاد.
ولی من پیشنهاد می کنم روند برنامه تون را تغییر بدید (البته اگر مجبور به نوشتن چنین روندی نیستید) شما با این روند با مشکلات زیادی روبرو می شید.
1- تا جایی که فهمیدم شما اطلاعات ثبت شده از قبل را هم توی دیتاگردویو سلکت می کنید پس اطلاعات جدید و قدیم با هم مخلوط می شن شما باید کاری کنید که بشه تشخیص داد کدام جدید و کدام قدیم هستند تا برای ارسال دست جمعی با مشکل روبرو نشوید.
2- فرض کنید کاربر داره توی دیتاگردویو اطلاعات را اضافه می کنه. 50 سطر اطلاعات می نویسه بعد برق بره یا سیستم هنگ کنه آن وقت چه اتفاقی می افته؟ کل اطلاعات تایپ شده از بین می ره چون جایی ذخیره نشدن (طبق گفته شما فقط وقتی از فرم خارج می شید اطلاعات ذخیره می شند) البته برای رفع این هم راهی هست ولی خب دردسر هم داره.
3- و مشکلات زیادی که بعدا خودتون باهاشون آشنا می شید.

من توصیه می کنم شما فقط به کاربر اجازه بدید یک row از دیتاگردویو را پر کنه و هر وقت کلید ذخیره (+) را بزنه هم توی دیتاست و هم توی بانک ذخیره بشه بعدش هم یه سطر خالی جدید ایجاد بشه تا بتونه row بعدی را پر کنه. این طوری به مشکلاتی که گفتم بر نمی خورید.

dorche
شنبه 23 بهمن 1389, 08:43 صبح
یک نکته به ذهنم اومد و اون اینکه وقتی به پروژتون یک بانک اضافه می کنید ، بانک مورد نظر در کنار فایل های دیگه پروژتون قرار می گیره و پس از اجرا کردن پروژه فایل بانکتون در کنار فایل اجرایی در پوشه bin کپی می شود .
حال نکانی که شما باید به اون دقت کنید : شما پروژه رو اجرا می کنید فایل بانک کپی می شود و اطلاعاتتون رو وارد می کنید حالا برنامه رو stop می کنید و دوباره اجرا می کنید و انتظار دارید اطلاعات قبلی رو ببینید اما اطلاعات قبلی وجود ندارند ! چرا ؟ چون بانکی که در کنار فایل های پروژه شما می باشد خالی است در با اجرا کردن برنامه بانک خالی به جای بانک قبلی در کنار فایل اجرایی کپی می شود و اظلاعات قیلی را از بین می برد.
شما می توانید پس از stop کردن برنامه بروید و فایل اجرایی در پوشه bin را جرا کنید ببینید اطلاعات ذخیره شده اند یا خیر ، با اجرا کردن فایل اجرایی مشکل قبلی به وجود نمی آید .

Atiyeh1370
شنبه 23 بهمن 1389, 21:00 عصر
من توصیه می کنم شما فقط به کاربر اجازه بدید یک row از دیتاگردویو را پر کنه و هر وقت کلید ذخیره (+) را بزنه هم توی دیتاست و هم توی بانک ذخیره بشه بعدش هم یه سطر خالی جدید ایجاد بشه تا بتونه row بعدی را پر کنه.
پس لطفا روش دومی که گفتی را واسم توضیح بده
لطفا اگه میشه با کد!
یا یه برنامه ساده کوچیک واسم بذارید
من فقط میخوام اطلاعاتی که با bindingNavigator وارد Datagrid میشه تو بانک اطلاعاتی ذخیره بشه
هرکس میدونه کمکم کنه
خیلی ممنون:خجالت: