PDA

View Full Version : سوال: روش ثبت اطلاعات در دیتابیس از داخل نرم افزار طراحی شده چگونه است؟



StepUp360
جمعه 14 خرداد 1389, 02:12 صبح
سلام

لطفا روش ثبت اطلاعات از داخل TextBox و ... در دیتابیس SQLServer توضیح دهید...

با ذکر مثال، باتشکر.

peymanjon
جمعه 14 خرداد 1389, 13:31 عصر
اگر منظورتون ورود اطلاعات از textbox با استفاده از کد insert به دیتابیس هست(اتصال به دیتابیس و گرفتن اطلاعات از کاربر و ورود آن به دیتابیس )که یک سری به این تاپیک بزنید:
http://barnamenevis.org/forum/showthread.php?t=180720

اگه منظورتون bind کردن text box به دیتابیس هست که شما میتونید از پنجره properties مربوط به textbox در قسمت databinding این کار را انجام بدید.
اگه روشن تر سوالتون را بگید بهتر میتونیم کمکتون کنیم.
موفق باشید.

mmd2009
جمعه 14 خرداد 1389, 14:03 عصر
سلام دوست عزیز

ابتدا باید بگم ما یه سری کلاس داریم به نام های





SqlConnection
SqlCommand
SqlDataAdapter
SqlParameter



که برای فراخوانی اونا باید از فضایی(using) استفاده کنیم که این فضا در کدنویسی اینطوری نوشته می شود




using System.Data.SqlClient;


و البته اگر بخواهیم از از کلاس های ado.net استفاده بکنیم مانند data set , data view باید از فضای زیر استفاده بکنیم




using System.Data;


کلاس SqlConnection :

این کلاس برقرار کننده ارتباط بین برنامه و بانک اطلاعاتی می باشد که به عبارتی دیگر اصلی ترین کلاس در ارتباطلات باانک اطلاعاتی هست ما در اینجا یک ConnectionString به این کلاس ارسال می کنیم که شامل تمامی داده های مورد نیاز برای ارتبط با بانک اطلاعاتی هست.

مانند مثال زیر :





SqlConnection objConnection = new

SqlConnection("Server=localhost;Database=Pubs;User" +
" ID=sa;Password=csdotnet;");


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




objConnection.Open();

objConnection.Close();


کلاس SqlCommand :

این کلاس حاوی دستوارت sql است برای اجرا روی داده های دریافت شده از بانک اطلاعاتی این دستور می تواند یک دستور select یا انتخاب و insert یا درج یا delete حذف یا update یا ویرایش باشد و برای ایجاد یک شی از نوع sqlcommand از کد زیر استفاده می کنیم




SqlCommand objCommand = new SqlCommand();


خاصیت Connection :

قبل از اینکه بخواهیم از sqlcommand استفاده بکنیم باید بعضی از خواص ان را تنطیم کنیم که یکی از این خاصیت ها connection است برای اینکه یک دستور در sqlcommand با موفقیت اجرا شود ابتدا باید ان را open کنیم




objCommand.Connection = objConnection;


خاصیت CommandText :

این خاصیت می تواند حاوی متنی باشد که عملیاتی را انجام دهد مانند کد زیر :





objCommand.CommandText = "INSERT INTO authors " +

"(au_id, au_lname, au_fname, contract) " +

"VALUES('123-45-6789', 'Barnes', 'David', 1)";


این دستور بالا بیان می کند که درج کن درون فیلد های جدول authors از مقدارهای که درون values قرار داده شده است

متد ExecuteNonQuery :

هر گاه بخواهیم دستوراست sqlcommand را اجرا کنیم باید دستور ExecuteNonQuery را فراخوانی کنیم ابتدا باید connection را open کنیم سپس پس از اجرای ExecuteNonQuery دوباره ان را close کنیم

اینم نمونه د اخر برنامه :






SqlConnection objConnection = new

SqlConnection("Server=localhost;Database=Pubs;User
ID=sa;Password=csdotnet;");

SqlCommand objCommand = new SqlCommand();
objCommand.Connection = objConnection;

objCommand.CommandText = "INSERT INTO authors " +

"(au_id, au_lname, au_fname, contract) " +

"VALUES(@au_id, @au_lname, @au_fname, @au_contract)";


objConnection.Open();
objCommand.ExecuteNonQuery();
objConnection.Close();

StepUp360
جمعه 14 خرداد 1389, 16:13 عصر
دوست عزیز من یک Mydata_DB.sdf درست کردم و با استفاده از bindingSource1 میخوام اطلاعات داخل 3تا textBox رو Save کنم توی Mydata_DB.sdf داخل فیلد های مثلا FirstName , LastName ,Password

حالا وقتی اطلاعات رو توی TextBox ها وارد کردم با یک دکمه مثل
private void btnSaveInfo_Click(object sender, EventArgs e)
{

}
اطلاعات توی Table»»Persons در دیتابیس Mydata_DB.sdf ذخیره بشه اگه ممکنه کد مربوطه رو بگید که چطوریه...

peymanjon
جمعه 14 خرداد 1389, 18:21 عصر
من پیشنهاد میکنم با کد نویسی به دیتا بیس وصل شی :این یک نمونه کد برات میذارم که برای وارد کردن اطلاعات به دیتابیس توسط 2 تا text box برای نام و نام خانوادگی می باشد.

SqlConnection objconn = new SqlConnection("Your connection String");
SqlDataAdapter dataadapter = new SqlDataAdapter();
DataSet objset = new DataSet();
SqlDataAdapter objadapadap = new SqlDataAdapter();
DataTable objtabe12=new DataTable();
dataadapter.InsertCommand = new SqlCommand();
dataadapter.InsertCommand.Connection = objconn;
dataadapter.InsertCommand.CommandText = "INSERT INTO Mydata_DB " + "(LastName,[First Name)" +"VALUES(@LastName,@FirstName)";
dataadapter.InsertCommand.Parameters.AddWithValue("@LastName", textBox2.Text);
dataadapter.InsertCommand.Parameters.AddWithValue("@FirstName", textBox1.Text);
objconn.Open();
dataadapter.InsertCommand.ExecuteNonQuery();
objconn.Close();
MessageBox.Show("Your information inserted successfully");


sپاورقی:در قسمت Your connection String باید آدرس دیتابیس خود را وارد کنید .

StepUp360
جمعه 14 خرداد 1389, 19:17 عصر
ممنون من از این کد استفاده کردم مشکل ارسال داده حل شده ، حالا من اطلاعات رو وارد کردم و در یک dataGridView1 به نمایش گذاشتم چطور میشه dataGridView1 همزمان با وارد کردن اطلاعات آپدیت بشه...


SqlConnection objConnection = new SqlConnection();
objConnection.ConnectionString = @"Data Source=www\sqlexpress;Initial Catalog=MyData_DB;Integrated Security=True";
SqlCommand objCommand = new SqlCommand();
//objCommand.CommandText = @"Select FirstName ,LastName ,Password From Persons";
objCommand.CommandText = "INSERT INTO Persons " +
"(FirstName, LastName, Password) " +
"VALUES('" + txtbFirstName.Text + "','" + txtbLastName.Text + "','" + txtbPassword.Text + "')";
objCommand.Connection = objConnection;

SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = objCommand;
DataSet Dataset = new DataSet();
objConnection.Open();
adapter.Fill(Dataset, "Persons");


اگه کدشو بذارید ممنون میشم. (Tanx)

ramin149
جمعه 14 خرداد 1389, 20:57 عصر
سلام دوست عزیز

ابتدا باید بگم ما یه سری کلاس داریم به نام های





SqlConnection
SqlCommand
SqlDataAdapter
SqlParameter

که برای فراخوانی اونا باید از فضایی(using) استفاده کنیم که این فضا در کدنویسی اینطوری نوشته می شود




using

System.Data.SqlClient;

و البته اگر بخواهیم از از کلاس های ado.net استفاده بکنیم مانند data set , data view باید از فضای زیر استفاده بکنیم




using

System.Data;

کلاس SqlConnection :

این کلاس برقرار کننده ارتباط بین برنامه و بانک اطلاعاتی می باشد که به عبارتی دیگر اصلی ترین کلاس در ارتباطلات باانک اطلاعاتی هست ما در اینجا یک ConnectionString به این کلاس ارسال می کنیم که شامل تمامی داده های مورد نیاز برای ارتبط با بانک اطلاعاتی هست.

مانند مثال زیر :




SqlConnection

objConnection = new


SqlConnection

("Server=localhost;Database=Pubs;User" +
" ID=sa;Password=csdotnet;");

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




objConnection.Open();

objConnection.Close();
کلاس SqlCommand :

این کلاس حاوی دستوارت sql است برای اجرا روی داده های دریافت شده از بانک اطلاعاتی این دستور می تواند یک دستور select یا انتخاب و insert یا درج یا delete حذف یا update یا ویرایش باشد و برای ایجاد یک شی از نوع sqlcommand از کد زیر استفاده می کنیم




SqlCommand

objCommand = new SqlCommand();

خاصیت Connection :

قبل از اینکه بخواهیم از sqlcommand استفاده بکنیم باید بعضی از خواص ان را تنطیم کنیم که یکی از این خاصیت ها connection است برای اینکه یک دستور در sqlcommand با موفقیت اجرا شود ابتدا باید ان را open کنیم




objCommand.Connection = objConnection;
خاصیت CommandText :

این خاصیت می تواند حاوی متنی باشد که عملیاتی را انجام دهد مانند کد زیر :




objCommand.CommandText =

"INSERT INTO authors " +


"(au_id, au_lname, au_fname, contract) "

+


"VALUES('123-45-6789', 'Barnes', 'David', 1)"

;

این دستور بالا بیان می کند که درج کن درون فیلد های جدول authors از مقدارهای که درون values قرار داده شده است

متد ExecuteNonQuery :

هر گاه بخواهیم دستوراست sqlcommand را اجرا کنیم باید دستور ExecuteNonQuery را فراخوانی کنیم ابتدا باید connection را open کنیم سپس پس از اجرای ExecuteNonQuery دوباره ان را close کنیم

اینم نمونه د اخر برنامه :








SqlConnection

objConnection = new


SqlConnection

("Server=localhost;Database=Pubs;User
ID=sa;Password=csdotnet;");


SqlCommand

objCommand = new SqlCommand();
objCommand.Connection = objConnection;


objCommand.CommandText =

"INSERT INTO authors " +


"(au_id, au_lname, au_fname, contract) "

+


"VALUES(@au_id, @au_lname, @au_fname, @au_contract)"

;



objConnection.Open();
objCommand.ExecuteNonQuery();
objConnection.Close();







میشه این کد ها رو به صورت کلاس بنویسید که فقط یک بار داخل کلاس بنویسیم و چندین بار استفاده کنیم ؟

peymanjon
جمعه 14 خرداد 1389, 22:09 عصر
دوست عزیز برنامهای که توی این آدرس که قبلا بهت دادم را اگه نگاه میکردی جواب سوالهایت را میگرفتی ، داخل اون برنامه شما یک dataset اول میسازی و بعد datagrid را بر اساس دادههای دیتابیست مقدار دهی میکنی ، بعد از هر بار insert دیتاست را update میکنی و datagrid دوباره با دادههای جدید مقدار دهی میشود.توی این لینک برنامه ای که گذاشته شده همه این کارهارا انجام میده و میتونید از کدهاش توی پروژه خودت استفاده کنی.
http://barnamenevis.org/forum/showthread.php?t=180720

mmd2009
جمعه 14 خرداد 1389, 22:50 عصر
ممنون من از این کد استفاده کردم مشکل ارسال داده حل شده ، حالا من اطلاعات رو وارد کردم و در یک dataGridView1 به نمایش گذاشتم چطور میشه dataGridView1 همزمان با وارد کردن اطلاعات آپدیت بشه...


SqlConnection objConnection = newSqlConnection();
objConnection.ConnectionString = @"Data Source=www\sqlexpress;Initial Catalog=MyData_DB;Integrated Security=True";
SqlCommand objCommand = newSqlCommand();
//objCommand.CommandText = @"Select FirstName ,LastName ,Password From Persons";
objCommand.CommandText = "INSERT INTO Persons " +
"(FirstName, LastName, Password) " +
"VALUES('" + txtbFirstName.Text + "','" + txtbLastName.Text + "','" + txtbPassword.Text + "')";
objCommand.Connection = objConnection;

SqlDataAdapter adapter = newSqlDataAdapter();
adapter.SelectCommand = objCommand;
DataSet Dataset = newDataSet();
objConnection.Open();
adapter.Fill(Dataset, "Persons");


اگه کدشو بذارید ممنون میشم. (Tanx)


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

مثلا شما کد رو تو form_load نوشتید که کدهای درون اون گرید ویو رو نمایش میدن

و کافیه اخر کد درج کد زیر رو بنوسید




form_load(sender,e);

StepUp360
شنبه 15 خرداد 1389, 02:47 صبح
ممنونم دوست عزیز، آقای mmd2009 و دیگر دوستان...

mmd2009
شنبه 15 خرداد 1389, 03:03 صبح
میشه این کد ها رو به صورت کلاس بنویسید که فقط یک بار داخل کلاس بنویسیم و چندین بار استفاده کنیم ؟


فکر کنم دوست عزیز میشه به صورت کلاس هم نوشت کدهارو :چشمک: