PDA

View Full Version : سوال: چگونگی اعمال عملیات CRUD در GridView هنگام استفاده از Inner Join



NasimBamdad
یک شنبه 16 مرداد 1390, 16:46 عصر
یکی از دوستان همین سایت ( متاسفانه اسمشان را فراموش کردم ) زحمت کشیدند و کد مفیدی در مورد INSERT , Update , Delete در DGV قرار دادند

البته دیتابیس oleDB بود که به SQL تبدیلش کردم ،


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.SqlClient;

namespace NoorAutomation
{
public partial class dgw : Form
{

//You should declare object variables as a class field.
private DataTable dataTable1 = new DataTable();
private SqlConnection SQLCNN1 = new SqlConnection();
private SqlDataAdapter SQLDA1 = new SqlDataAdapter();


public dgw()
{
InitializeComponent();
this.SQLCNN1.ConnectionString = (@"Data Source=.\SQLEXPRESS;initial catalog=NoorAutomation;integrated security=true");
this.SQLDA1.SelectCommand = new SqlCommand("SELECT ID, Field1, Field2 FROM Table1", this.SQLCNN1);
this.SQLCNN1.Open();
this.SQLDA1.Fill(this.dataTable1);
this.dataGridView1.DataSource = dataTable1;

//Initialize UPDATE Command.
this.SQLDA1.UpdateCommand = new SqlCommand("UPDATE Table1 SET Field1 = @field1, Field2 = @field2 WHERE ID = @id", this.SQLCNN1);
this.SQLDA1.UpdateCommand.Parameters.AddWithValue("@field1", typeof(string)).SourceColumn = "Field1";
this.SQLDA1.UpdateCommand.Parameters.AddWithValue("@field2", typeof(string)).SourceColumn = "Field2";
this.SQLDA1.UpdateCommand.Parameters.AddWithValue("@id", typeof(int)).SourceColumn = "ID";

//Initialize INSERT Command.
this.SQLDA1.InsertCommand = new SqlCommand("INSERT INTO Table1 (Field1, Field2) VALUES (@field1, @field2)", this.SQLCNN1);
this.SQLDA1.InsertCommand.Parameters.AddWithValue("@field1", typeof(string)).SourceColumn = "Field1";
this.SQLDA1.InsertCommand.Parameters.AddWithValue("@field2", typeof(string)).SourceColumn = "Field2";

//Initialize DELETE Command.
this.SQLDA1.DeleteCommand = new SqlCommand("DELETE FROM Table1 WHERE ID = @id", this.SQLCNN1);
this.SQLDA1.DeleteCommand.Parameters.AddWithValue("@id", typeof(int)).SourceColumn = "ID";


this.SQLCNN1.Close();


}



private void dgw_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'noorAutomationDataSet14.view_table' table. You can move, or remove it, as needed.
this.view_tableTableAdapter.Fill(this.noorAutomati onDataSet14.view_table);
// TODO: This line of code loads data into the 'noorAutomationDataSet14.Table1' table. You can move, or remove it, as needed.
this.table1TableAdapter.Fill(this.noorAutomationDa taSet14.Table1);
// TODO: This line of code loads data into the 'noorAutomationDataSet13.tempz' table. You can move, or remove it, as needed.
this.tempzTableAdapter.Fill(this.noorAutomationDat aSet13.tempz);

}

private void button1_Click(object sender, EventArgs e)
{
this.SQLDA1.Update(dataTable1);
}
}
}




درست هم کار می کنه ، اما سوال من این هست که :


1- در اینجا عملیات Insert , Update , Delete در یک جدول اعمال میشه ، اگه ما کوری داشته باشیم که چند تا جدول رو با هم دیگه INNER JOIN کرده باشه ، تکلیف چیه ؟


قبلا یک کدی رو دیدم که وقتی یک ROW رو انتخاب می کردی و اون کد اجرا می شد ، ROW انتخاب شده پاک می شد

همچین چیزی بود

dataGridView1.SelectedRows.Remove

دوستان عزیز ممنون میشوم کمک کنید

mehdi.mousavi
شنبه 22 مرداد 1390, 13:36 عصر
در اینجا عملیات Insert , Update , Delete در یک جدول اعمال میشه ، اگه ما کوری داشته باشیم که چند تا جدول رو با هم دیگه INNER JOIN کرده باشه ، تکلیف چیه ؟

سلام.
در اینصورت می تونید از Updatable View (http://www.ibm.com/developerworks/data/library/techarticle/0210rielau/0210rielau.html) ها استفاده کنید. برنامه شما بازهم با یک View درگیر خواهد بود اما پشت پرده، به روز رسانی View میتونه منجر به به روز رسانی چند جدول بشه.

موفق باشید.

NasimBamdad
چهارشنبه 26 مرداد 1390, 15:01 عصر
سلام.
در اینصورت می تونید از Updatable View (http://www.ibm.com/developerworks/data/library/techarticle/0210rielau/0210rielau.html) ها استفاده کنید. برنامه شما بازهم با یک View درگیر خواهد بود اما پشت پرده، به روز رسانی View میتونه منجر به به روز رسانی چند جدول بشه.

موفق باشید.

در تحقیقاتی که من داشتم و لینک آموزشی که شما زحمت کشیدید متوجه شدم که این Updatable View یک شی یا متد هست که بروز می شود ، و شما فرمودید


برنامه شما بازهم با یک View درگیر خواهد بود اما پشت پرده، به روز رسانی View میتونه منجر به به روز رسانی چند جدول بشه.

من می خواهم کاربر با برنامه C# درگیر باشد نه با VIEW ، چه طوری باید این رو در C# اعمال کرد که اعملیات CRUD انجام بشه .

میشه کمی بیشتر توضیح بدید و یا مثالی بزنید ؟

mehdi.mousavi
پنج شنبه 27 مرداد 1390, 00:56 صبح
در تحقیقاتی که من داشتم و لینک آموزشی که شما زحمت کشیدید متوجه شدم که این Updatable View یک شی یا متد هست که بروز می شود ، و شما فرمودید
من می خواهم کاربر با برنامه C# درگیر باشد نه با VIEW ، چه طوری باید این رو در C# اعمال کرد که اعملیات CRUD انجام بشه .
میشه کمی بیشتر توضیح بدید و یا مثالی بزنید ؟

سلام.
کاربر با VIEW درگیر نمیشه، شما بعنوان توسعه دهنده باید از Updatable View ها استفاده کنید.
در صورتیکه در استفاده از Updatable View ها سوالی دارید، لطفا در بخش بانک های اطلاعاتی جستجو کنید،
اگر به پاسخ سوالتون نرسیدید، اونجا سوالتون رو مطرح کنید تا دوستان در اون بخش به سوال شما پاسخ بدن.

موفق باشید.