PDA

View Full Version : سوال: راهنمایی در c#



sara1368
پنج شنبه 16 اردیبهشت 1389, 09:01 صبح
سلام به تمامیه دوستان
اول از همه میخوام بگم خیلی خوشحالم که عضو این انجمن شدم و کاربرای فعالی مثل شما ها رو دیدم
من دانشجو کامپیوترم و به رشته ام هم خیلی علاقه دارم اما احساس میکنم مطالبی که در دانشگاه تدریس میشه اصلا کافی نیست به خاطر همین خودم شروع کردم به خوندن سی شارپ و sql که بتونم بجای فایل استریم ها یه پایگاه داده داشته باشم .تونستم بلاخره با کتابایی که خوندم این دوتا رو به هم اتصال بدم(البته میدونم اینایی که میگم برا خیلی هاتون پیش پا افتاده ست .دیگه چیکار کنم من مبتدیم)اما نمیدونم چه جوری میتونم مثلا یه داده جدید رو توش ذخیره کنم یه حذف کنم.البته اینجا مطالب خیلی زیادی در این خصوص دوستان زحمت کشیدن گذاشتن اما من واقعا نمیدونم کدومو باید بخونم..ممنون میشم راهنمایم کنین

از تمام اونایی که به خاطر یه کاربر مبتدی وقت میگذارن و راهنمایی میکنن متشکرم

M.YasPro
پنج شنبه 16 اردیبهشت 1389, 09:38 صبح
سلام
به برنامه نویس خوش آمدید .
شما با استفاده از ویزارد به دیتابیس وصل شدی ؟ یا برای این کار کد نوشتید ؟

sara1368
پنج شنبه 16 اردیبهشت 1389, 09:51 صبح
سلام
به برنامه نویس خوش آمدید .
شما با استفاده از ویزارد به دیتابیس وصل شدی ؟ یا برای این کار کد نوشتید ؟
ممنون
کد نوشتم البته من چیز زیادی هنوز نمیدونم ونمیدونم منظورتون از ویزارد چیه.اما من طبق نوشته های کتاب بعد از اینکه یه جدول ساختم توsql و با sqldataadapyer ,sqlconectionو...به هم متصلشون کردم.

M.YasPro
پنج شنبه 16 اردیبهشت 1389, 10:09 صبح
خوب توی کدتون یه شی به نام sqlcommand هم دارید درسته ؟
طبعا یه دستور sql هم به اون فرستادید . حالا به جای دستور Select دستور insert یا حذف بهش بفرستید .
موفق باشید .

saed2006
پنج شنبه 16 اردیبهشت 1389, 10:12 صبح
فعلا تاپیک 1000 نکته در C#‎ رو بخون

sara1368
پنج شنبه 16 اردیبهشت 1389, 10:14 صبح
خوب توی کدتون یه شی به نام sqlcommand هم دارید درسته ؟
طبعا یه دستور sql هم به اون فرستادید . حالا به جای دستور Select دستور insert یا حذف بهش بفرستید .
موفق باشید .
درسته اما من من میخوام مثلا توی textboxوقتی چیزی مینویسم اضافه بشه نه اینکه با دستور select یاinsert

com_engineer_ab
پنج شنبه 16 اردیبهشت 1389, 10:24 صبح
سلام به تمامیه دوستان
اول از همه میخوام بگم خیلی خوشحالم که عضو این انجمن شدم و کاربرای فعالی مثل شما ها رو دیدم
من دانشجو کامپیوترم و به رشته ام هم خیلی علاقه دارم اما احساس میکنم مطالبی که در دانشگاه تدریس میشه اصلا کافی نیست به خاطر همین خودم شروع کردم به خوندن سی شارپ و sql که بتونم بجای فایل استریم ها یه پایگاه داده داشته باشم .تونستم بلاخره با کتابایی که خوندم این دوتا رو به هم اتصال بدم(البته میدونم اینایی که میگم برا خیلی هاتون پیش پا افتاده ست .دیگه چیکار کنم من مبتدیم)اما نمیدونم چه جوری میتونم مثلا یه داده جدید رو توش ذخیره کنم یه حذف کنم.البته اینجا مطالب خیلی زیادی در این خصوص دوستان زحمت کشیدن گذاشتن اما من واقعا نمیدونم کدومو باید بخونم..ممنون میشم راهنمایم کنین

از تمام اونایی که به خاطر یه کاربر مبتدی وقت میگذارن و راهنمایی میکنن متشکرم


سلام دوست عزیز
سعی می کنم از 0 براتون بگم که باید چکار کنین هر جاش مشکل داشتین بگین ت حل شه
ما فرض می کنیم که شما یه دیتابیس دارین و می خواین داده های یکی از جداول رو توی گراید نمایش بدین.پس :

DataBase---------------------------------------------------------------------------------Gride
همینجور که می دونین اینکار با دستورات sql انجام می شه درسته؟پس

DataBase----------------------------------SQLCommand-----------------------------------Gride
اما دستورات sql از کجا بدونن که باید روی کدوم جدول از کدوم دیتابیس اجرا بشن؟ برای همین به دستورات آدرس دیتابیس رو می دیم تو C#‎‎ بهش می گن کانکشن.پس:

DataBase----------SQLConnection--------------SQLCommand-----------------------------------Gride
حالا باید حاصل دستورات رو توی گراید بریزیم ولی متاسفانه نمیشه مستقیم اینکارو کردچرا؟؟؟از طراحان C#‎‎ بپرسید.:لبخند:برای همین از یه رابط به نام دیتاست استفاده می کنیم که دیتاست هم توسط دیتاآداپتور پر میشه.پس:


DataBase----------SQLConnection--------------SQLCommand----------DataAdabter---------DataSet---------Gride

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


System.Data.SqlClient.SqlConnectio con = new System.Data.SqlClient.SqlConnection();

بالا گفتیم که باید بهش آدرس دیتابیس رو بدیم که یه رشته است این رشته با 1000 نوع روش و نوع میشه ساخت فرض ما بر این است که از دیتابیس خود vs استفاده کردی (sqlExpress) برا همین به روش زیر میتونین این رشته رو بدست بیاریدو اونو اینجوری به کانکشنتون بدین و اونو باز کنین "من فرض کردم نام دیتابیسم database1 ونام پروژه WindowsFormsApplication1 است" پس:



con.ConnectionString =
WindowsFormsApplication1 .Properties.Settings.Default.database1ConnectionSt ring;
con.open();


حالا بریم سراغ دستورات
دستورات sql به 4 دسته تقسیم می شن:select insert update delete
ما اول 3 دستور Insert delete update رو انجام می دیم که ساده تر است
برا این منظور به روش زیر عمل می کنیم:
ما یه آبجکت از sqlcommand می سازیم و بهش میگیم که رو کدوم دیتابیس اجرا بشه وچه دستوری اجرا بشه و حالا اجرا شو. این روند رو کد می کنیم:



System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand();
com.Connection = (con);
com.CommandText = (command);
com.ExecuteNonQuery();

در کد بالا منظور از commandدستور sql است حالا می تونه insert یا delete یا update باشه
ولی اگه select بود چی؟؟؟
برای این منظور کد بالا رو به کد زیر تغییر میدیم:
به جای اجرا در کد بالا ما یه آبجکت از دیتاآداپتور می سازیم و خاصیت selectcommandش رو دستورcommand قرار می دیم و از متود fill برای ریختن حاصل در دیتاست استفاده می کنیم و بعد دیتاست رو به گراید بایند می کنیم تا داده ها در گراید نمایش داده بشن.این روند رو کد می کنیم:



System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand();
com.Connection = (con);
com.CommandText = (command);
SqlDataAdapter d = newSqlDataAdapter();
d.SelectCommand = (com);
DataSet ds =newDataSet();
d.Fill(ds);
dataGridView1.DataSource = (ds.Tables[0]);

امیدوارم مفید واقع شده باشه

M.YasPro
پنج شنبه 16 اردیبهشت 1389, 10:31 صبح
sqlCommand.CommandText = "insert into table fields(id,name) values(" + txtID.Text + ",'" + txtName.Text + "')";


منظورتون همین بود که مقادیر ورودی توسط کاربر رو به دستور sql بدید ؟

com_engineer_ab
پنج شنبه 16 اردیبهشت 1389, 10:35 صبح
sqlCommand.CommandText = "insert into table fields(id,name) values(" + txtID.Text + ",'" + txtName.Text + "')";


منظورتون همین بود که مقادیر ورودی توسط کاربر رو به دستور sql بدید ؟
البته باید اصلاح کنم که اگه می خواین از داده های فارسی استفاده کنین باید نوع رو توی sql از nvarباشه و توی دستور هم از کد زیر استفاده کنین


sqlCommand.CommandText = "insert into table fields(id,name) values(" + txtID.Text + ",N'" + txtName.Text + "')";

sara1368
پنج شنبه 16 اردیبهشت 1389, 10:36 صبح
امیدوارم مفید واقع شده باشه[/quote]
ممنونم اما ممکنه یکی بعد از اینو بگه؟مثلا یه textbox و یه دکمه هم گذاشتیم حالا چه جوری میتونم وقتی تو تکسباکسم چیزی نوشتم و روی دکمه کلیک کردم بگم بره توی همون دتابیس(جدول) ذخیره بشه یا با استفاده از یه دکمه دیلیت بخوام وقتی کلیک کردم با توجه به عدد یا چیزی که داخل تکسباکس نوشتم حذف بشه؟؟؟؟دستورات داخل دکمه را لطفا بگین.
متشکرم از راهنماییتون

com_engineer_ab
پنج شنبه 16 اردیبهشت 1389, 10:44 صبح
امیدوارم مفید واقع شده باشه
ممنونم اما ممکنه یکی بعد از اینو بگه؟مثلا یه textbox و یه دکمه هم گذاشتیم حالا چه جوری میتونم وقتی تو تکسباکسم چیزی نوشتم و روی دکمه کلیک کردم بگم بره توی همون دتابیس(جدول) ذخیره بشه یا با استفاده از یه دکمه دیلیت بخوام وقتی کلیک کردم با توجه به عدد یا چیزی که داخل تکسباکس نوشتم حذف بشه؟؟؟؟دستورات داخل دکمه را لطفا بگین.
متشکرم از راهنماییتون[/quote]

sqlconnectionو connectionstring برا همینه دیگه

sara1368
پنج شنبه 16 اردیبهشت 1389, 10:48 صبح
sqlconnectionو connectionstring برا همینه دیگه[/quote]
:متفکر:سعی میکنم اینارو دوباره امتحان کنم و ببینم مشکل از کجاست.بازم ممنون:افسرده:

M.YasPro
پنج شنبه 16 اردیبهشت 1389, 10:54 صبح
منظور دوستمون sqlcommand و commandText هست . درسته؟

RIG000
پنج شنبه 16 اردیبهشت 1389, 11:05 صبح
امیدوارم مفید واقع شده باشه
ممنونم اما ممکنه یکی بعد از اینو بگه؟مثلا یه textbox و یه دکمه هم گذاشتیم حالا چه جوری میتونم وقتی تو تکسباکسم چیزی نوشتم و روی دکمه کلیک کردم بگم بره توی همون دتابیس(جدول) ذخیره بشه یا با استفاده از یه دکمه دیلیت بخوام وقتی کلیک کردم با توجه به عدد یا چیزی که داخل تکسباکس نوشتم حذف بشه؟؟؟؟دستورات داخل دکمه را لطفا بگین.
متشکرم از راهنماییتون[/QUOTE]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Globalization;

namespace M2rMobile
{

public partial class LstKharid : Form
{
PersianCalendar Shamsi = new PersianCalendar();
DateTime Miladi = DateTime.Now;
DataTable da = new DataTable();
OleDbConnection con = new OleDbConnection();
OleDbDataAdapter Adap = new OleDbDataAdapter();
int RowPosition = 0;
private void ShowCurrentRecord()
{
if (da.Rows.Count == 0)
{
nameForoshandeTextBox.Text = "";
nameKalaTextBox.Text = "";
tedadTextBox.Text = "";
tarikhTextBox.Text = "";
ghymatTextBox.Text = "";
pardakhtiTextBox.Text = "";
baghimandeTextBox.Text = "";
tozihatTextBox.Text = "";

return;
}
/////////////
nameForoshandeTextBox.Text = da.Rows[RowPosition]["NameForoshandeh"].ToString();

nameKalaTextBox.Text = da.Rows[RowPosition]["nameKala"].ToString();
tedadTextBox.Text = da.Rows[RowPosition]["tedad"].ToString();
tarikhTextBox.Text = da.Rows[RowPosition]["tarikh"].ToString();
ghymatTextBox.Text = da.Rows[RowPosition]["ghymat"].ToString();
pardakhtiTextBox.Text = da.Rows[RowPosition]["PardakhtShode"].ToString();
baghimandeTextBox.Text = da.Rows[RowPosition]["baghimandeh"].ToString();
tozihatTextBox.Text = da.Rows[RowPosition]["tozihat"].ToString();


}
public LstKharid()
{
InitializeComponent();
con.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\M2r.mdb";
}

private void LstKharid_Load(object sender, EventArgs e)
{




// btnSave.Enabled = false;
// نمایش اطلاعات درون بانک در جدول لیست خرید
Adap = new OleDbDataAdapter("SELECT * From LstKharid", con);

try
{
con.Open();

Adap.Fill(da);
dataGridView1.DataSource = da;
// dataGridView1.Rows[0].ReadOnly = true;
}
finally
{
con.Close();
}

}

private void btnNew_Click(object sender, EventArgs e)
{
if (tarikhTextBox.Text == "")
{
tarikhTextBox.Text = Shamsi.GetYear(Miladi).ToString()+"/" + Shamsi.GetMonth(Miladi).ToString()+"/" + Shamsi.GetDayOfMonth(Miladi).ToString();
}
int Id = 1;


da.Columns["Id"].AutoIncrement = true;
if (da.Rows.Count != 0)
{
DataRow Row = da.Rows[da.Rows.Count - 1];
Id = int.Parse(Row["Id"].ToString()) + 1;
}
da.Rows.Add(Id, nameForoshandeTextBox.Text, nameKalaTextBox.Text, tedadTextBox.Text, tarikhTextBox.Text, ghymatTextBox.Text, pardakhtiTextBox.Text, baghimandeTextBox.Text, tozihatTextBox.Text);

btnSave.Enabled = true;
btnNew.Enabled = false;

// چرا با این کد اطلاعات تو گرید ویو درج نمیشه خطا هم نمیده میشه کمک کنید
}

private void btnSave_Click(object sender, EventArgs e)
{

OleDbCommandBuilder Cb = new OleDbCommandBuilder(Adap);

try
{

//Save
con.Open();
Adap.Update(da);
MessageBox.Show("Save");
tarikhTextBox.Text = string.Empty;

}
finally
{
con.Close();
}
btnSave.Enabled = false;
btnNew.Enabled = true;

}

private void btnDelete_Click(object sender, EventArgs e)
{
// Delete............................
OleDbCommandBuilder Cb = new OleDbCommandBuilder(Adap);
con.Open();
if (dataGridView1.SelectedRows.Count > -1)
foreach (DataGridViewRow Item in dataGridView1.SelectedRows)
da.Rows[Item.Index].Delete();
// Save........................................

Adap.Update(da);
MessageBox.Show(" 1 Rows(Delete): Save In Bank ");
con.Close();
}

private void btnNexet_Click(object sender, EventArgs e)
{
if (RowPosition <da.Rows.Count -1)
{
RowPosition++;
this.ShowCurrentRecord();
}
}

private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
if (e.Row.Index == 0)

e.Cancel = true;
}

private void btnEnd_Click(object sender, EventArgs e)
{
try
{
if (da.Rows.Count != 0)
{
RowPosition = da.Rows.Count - 1;
this.ShowCurrentRecord();
}
}
catch (Exception)
{
MessageBox.Show("شما در رکورد آخر هستید");
}
}

private void btnPerevius_Click(object sender, EventArgs e)
{
try
{
if (RowPosition != 0)
{
RowPosition--;
this.ShowCurrentRecord();

}
}
catch (Exception)
{
MessageBox.Show("اطلاعات هنوز مشاهده نگردیده است");
}
}

private void btnFirest_Click(object sender, EventArgs e)
{
try
{
if (RowPosition < da.Rows.Count - 1)
{
RowPosition++;
this.ShowCurrentRecord();
}
}
catch (Exception)
{
MessageBox.Show("اطلاعات هنوز مشاهده نگردیده است");
}
}
این کد های برنامه ی من که دارم روش کار میکنم نگاش کن اگه نتونستی متوجه شی دوباره بگو یا واسم پیغام بزن . خاستی برنامه ساده بهت میدم تا دستورات توش باشه و چه دستوراتی رو میخای . اما سعی کن الگو برداری کنی و چیزی یاد بگیری

sara1368
جمعه 17 اردیبهشت 1389, 11:46 صبح
این کد های برنامه ی من که دارم روش کار میکنم نگاش کن اگه نتونستی متوجه شی دوباره بگو یا واسم پیغام بزن . خاستی برنامه ساده بهت میدم تا دستورات توش باشه و چه دستوراتی رو میخای . اما سعی کن الگو برداری کنی و چیزی یاد بگیری




ممنونم.ممکنه اون برنامه های ساده ای هم که گفتین بدین

RIG000
جمعه 17 اردیبهشت 1389, 21:26 عصر
ممنونم.ممکنه اون برنامه های ساده ای هم که گفتین بدین
اینم برنامه ساده:چشمک:

sara1368
جمعه 17 اردیبهشت 1389, 21:44 عصر
اینم برنامه ساده:چشمک:
ممنونم اما نمیتونم دانلود کنم نمیدونم مشکل کجاست!!!

RIG000
جمعه 17 اردیبهشت 1389, 23:43 عصر
ارور ش چیه که نمیتونی ؟ سرعت نت داری که بتونی dl کنی؟ البته این فایل حجمی نداره به راحتی dl میشه با dial up

RIG000
شنبه 18 اردیبهشت 1389, 00:00 صبح
ممنونم اما نمیتونم دانلود کنم نمیدونم مشکل کجاست!!!

اینجا ------------------->>>
http://rapidshare.com/files/384688880/SimpleDBWork.zip.html

sara1368
شنبه 18 اردیبهشت 1389, 13:39 عصر
اینجا ------------------->>>
http://rapidshare.com/files/384688880/SimpleDBWork.zip.html
بله adsl دارم ممنون دانلود شد.
عالی بود