نمایش نتایج 1 تا 40 از 45

نام تاپیک: ADO.NET در دات نت

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    Lightbulb باز و بستن پايگاه داده

    با استفاده از دستورات پست قبلي شما تونستيد با پايگاه داده ارتباط برقرار كنيد اما اين رو در نظر داشته باشيد كه فقط ارتباط برقرار كرديد. يعني فايل پايگاه داده مورد نظر شما هنوز باز نشده. براي اين كار از متد Open شي sqlConnection استفاده مي كنيم:
    در #C:

    cnn.Open();

    در VB.NET:

    cnn.Open()


    شعار هميشگي كار با فايل ها: هر فايلي كه باز ميشه بايد بسته بشه. براي بستن فايل پايگاه داده از متد Close استفاده مي كنيم:
    در #C:

    cnn.Close();

    در VB.NET:

    cnn.Close()

  2. #2

    Lightbulb روال و متد Connect

    در كد نويسي بايد سعي كنيد تا جايي كه ممكن هست از تكرار پرهيز كنيد پس براي اينكه در كلاسهاي مختلف برنامه از كد نويسي اضافي پرهيز كرده باشيم ميايم يه روال در VB و يه متد در #C مي نويسيم تا كار برقراري ارتباط با پايگاه داده رو انجام بده. بعداً با اين پست زياد كار ميكنيم.
    در #C:

    public void Connect()
    {

    SqlConnection
    cnn =
    newSqlConnection();
    cnn.ConnectionString = "Data Source=Computer1;initial catalog=StorDB ;integrated security=true;";
    }

    در VB.NET:

    PrivateSub Connect()
    Dim cnn As New SqlConnection
    cnn.ConnectionString = "Data Source=COMPUTER1;Initial Catalog=StorDB ;Integrated Security=True"
    EndSub

    حالا در هرجاي برنامه براي اينكه بخوام ارتباط با پايگاه داده برقرار كنم () Connect رو صدا مي زنم:
    در #C:

    Connect();

    در VB.NET:

    Connect()

  3. #3

    Lightbulb شي sqlCommand، آدمك زورگو

    براي استفاده از دستورات SQL جهت فراخواني اطلاعات جدول در برنامه، بايد از شي sqlCommand استفاده كنيم. ما در كل نياز به دو چيز داريم:
    1. دستور SQL مورد نظر
    2. آدرس جدول پايگاه داده
    براي اين كار بايد يه object از شي sqlCommand داشته باشيم:
    در #C:

    sqlCommand cmd = new sqlCommand();

    در VB.NET:

    Dim cmd As New sqlCommand

    اين دستور باعث ميشه كه يه Refrence جديد در برنامه به اسم cmd ساخته بشه. حالا براي اينكه ما يه دستور SQL رو به اين Refrence ارجاع بديم بايد از خاصيت CommandText اون استفاده كنيم. حالا من مي خوام با استفاده از خاصيت CommandText اطلاعات جدول رو در فراخواني كنم:
    در #C:

    cmd.CommandText = "select * from Table";

    در VB.NET:

    cmd.CommandText = "select * from Table"

    در واقع با دستور بالا اون آدمك كوچيكه كه اسمش sqlCommand بود داره به cmd مي گه كه برام اطلاعات جدول Table رو Select كن. حالا cmd بهش مي گه كه از كجا برم اين اطلاعات رو بگيرم. آدرسش كجاست؟ جواب خاصيت Connection هستش كه بايد با Refrence قبلي يعني cnn مقداردهي بشه:
    در #C:

    cmd.Connection = cnn;

    در VB.NET:

    cmd.Connection = cnn

    حالا همه چيز آماده هستش تا اطلاعات جدول مورد نظر ما فراخواني بشه. هم دستور SQL رو داريم هم آدرس.

  4. #4

    Lightbulb منبع DataSet

    براي اينكه يه Refrence از DataSet داشته باشيم كد زير رو مي نويسيم:
    در #C:

    DataSet ds = newDataSet();

    در VB.NET:

    Dim ds AsNew DataSet()

    همون طور كه گفته شد sqlDataAdapter دستور و آدرس رو از sqlCommand گرفت و رفت سراغ DataBase. حالا بايد اطلاعات رو بگيره و بريزه درون انبار DataSet.
    براي اينكه DataSet ما پر بشه بايد اطلاعات درون sda يا sqlDataAdapter رو درون اين انبار Fill كنيم:
    در #C:

    cnn.Open();
    sda.Fill(ds ,
    "Barnamenevis");
    cnn.Close();

    در VB.NET:

    cnn.Open()
    sda.Fill(ds,
    "Barnamenevis")
    cnn.Close()

    cnn.Open: بانك اطلاعاتي رو باز مي كنه.
    Fiil: دستور Fill اطلاعات رو درون DataSet خالي مي كنه.
    sda.Fill (DataSet Refrence, "DataSet Name")
    DataSet Refrence: همون Refrence جديد(new) از نوع DataSet هستش.
    DataSet Name: براي DataSet برنامه يك اسم انتخاب مي كنيم.
    cnn.Close: بانك اطلاعاتي ما بسته ميشه.
    حالا انبار DataSet ما پر شد از اطلاعات Database و براي نمايش اطلاعات در برنامه بايد با DataSet كار كرد نه DataBase!

  5. #5

    Lightbulb نمايش اطلاعات در DataGridView

    حالا براي نمايش اطلاعات در DataGridView بايد DatagridView رو set كنم. دو تا خاصيت هستش كه باهاشون كار دارم:
    1. Data Source
    2. Data member
    Data Source اسم پايگاه داده هستش كه ما بهش DataSet رو معرفي مي كنيم چون قرار شد كه برنامه با DataBase كار نكنه. به Data member هم اسم DataSet رو مي ديم تا DataGridView ما اطلاعات رو نمايش بده. پس در قسمت Form_Load برنامه اين كد رو اضافه كنيد:
    در #C:

    LoadAll();
    dataGridView1.DataSource = ds;
    dataGridView1 .DataMember =
    "Barnamenevis";

    در VB.NET:

    LoadAll()
    DataGridView1.DataSource = ds
    DataGridView1.DataMember =
    "Barnamenevis"

  6. #6

    Lightbulb استفاده از يك متغير Static در اتصال به پايگاه داده

    كاربر Afshin_Zavar در پيام خصوصي خود به بنده فرمودند:
    در آموزشهایی که در رابطه با اتصال و کار با DB داده بودید، یک نکته برام گنگ بود
    شما مرتبا کانکت میشید، یه کوئری می گیرید و دیسکانکت میشید.
    اینکه مرتبا قطع و وصل میشید، سرباری روی سرور اعمال نمیکنه ؟
    بايد عرض كنم كه جناب Afshin_Zavar درست مي فرمايند و براي اينكه از اتصال هاي پي در پي جلوگيري بشه بايد ما يك راه حلي رو پيدا كنيم:
    فعلاً #C:
    يك كلاس به نام SingleTon ايجاد مي كنيم و در اون كد زير رو مينويسيم:

    classSingleTon
    {
    publicstaticSqlConnection conn = null;
    public SingleTon()
    {
    if (conn == null)
    {
    conn =
    newSqlConnection();
    Console.WriteLine("First Connection");
    }
    else
    Console.WriteLine("Connected");
    }

    حال در كلاس برنامه اتصال رو تست مي كنيم:

    classProgram
    {
    staticvoid Main(string[] args)
    {
    SingleTon obj1 = newSingleTon();
    SingleTon obj2 = newSingleTon();
    SingleTon obj3 = newSingleTon();
    SingleTon obj4 = newSingleTon();
    Console.ReadKey();
    }
    }


  7. #7
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    شهر راز
    پست
    178

    سوال در باره كليوم هدر

    سلام من تو بانكم ركورد هاي نام و ركورد هاي مشابهي رو دارم كه ميخواهم بعد اؤ فراخواني أنها با دستور select كليوم هدرشون با نامي كه من ميخوام نشون داده بشه
    ايا راهي براي انجام اين كار هست؟
    ممنون

  8. #8

    Lightbulb شي sqlDataAdapter

    خوب حالا ما تونستيم يه دستور SQL كامل داشته باشيم. براي اينكه اطلاعات حمل بشه نياز به اون آدمك بزرگه داريم يعني sqlDataAdapter. بازهم يه Refrend از اين شي مي سازيم:
    در #C:

    SqlDataAdapter sda = newSqlDataAdapter();

    در VB.NET:

    Dim sda AsNew SqlDataAdapter()

    sqlDataAdapter يه سري فعاليتها داره كه مي تونه اونها رو انجام بده. من براي اينكه مي خوام اطلاعات رو فراخواني كنم از خاصيت SelectCommand اون استفاده مي كنم. از ديگر خاصيت هاي sqlDataAdapter ميشه به DeleteCommand ،insertCommand و UpdateCommand اشاره كرد.
    حالا اون آدمك بزرگه يعني sqlDataAdapter از sqlCommand مي پرسه كه دستور SQL مورد نظر + آدرس جدول پايگاه داده كجاست؟ براي اينكه كار رو ما انجام بديم بايد از خاصيت SelectCommand استفاده كنيم. من ميام اين خاصيت رو برابر cmd كه قبلاً تعريف كردم قرار مي دم:
    در #C:

    sda.SelectCommand = cmd;

    در VB.NET:

    sda.SelectCommand = cmd

    كار sqlDataAdapter تموم شد.

    سوال:
    شايد براي شما سوال بشه كه sda.SelectCommand از كجا مي فهمه كه دستور SQL و آدرس چيه؟ ما كه بهش مستقيم نگفتيم پس چي جوري اين اتفاق ميوفته؟
    جواب سادست. اگر دقت كنيد cmd يه خاصيت داشت به اسم CommandText يه خاصيت ديگه داشت به اسم Connection. جالبه بدونيد كه sda.SelectCommand هم اين خاصيت ها رو داره براي همين خودش تشخيص مي ده كه كدوم مقدار در كدو خاصيت بايد قرار بگيره. اگر به اين موضوع شك داريد دستورات زير رو اجرا كنيد و نتيجه كار رو ببينيد:
    در #C:

    MessageBox.Show(sda.SelectCommand .CommandText );
    MessageBox.Show(sda.SelectCommand .Connection .ToString ());

    در VB.NET:

    MsgBox(sda.SelectCommand.CommandText)
    MsgBox(sda.SelectCommand.Connection.ToString())

  9. #9

    Lightbulb تابع و متد LoadALL

    با روال و متد Connect آشنا شديم و براي صرفه جويي در كد ميايم LoadAll رو مي سازيم. اين پست در واقع در همه جاي برنامه كاربرد داره. يعني ميشه ازش به عنوان يه Refresh استفاده كرد:
    در #C:

    privateDataSet LoadAll()
    {
    Connect();
    cmd.CommandText = "select * from shelf";
    cmd.Connection = cnn;
    sda.SelectCommand = cmd;
    cnn.Open();
    sda.Fill(ds , "Barnamenevis");
    cnn.Close();
    return ds;
    }

    در VB.NET:

    PrivateFunction LoadAll() As DataSet
    Connect()
    cmd.CommandText = "select * from shelf"
    cmd.Connection = cnn
    sda.SelectCommand = cmd
    sda.SelectCommand.Connection = cnn
    cnn.Open()
    sda.Fill(ds, "Barnamenevis")
    cnn.Close()
    Return ds
    EndFunction

    حالا در هرجاي برنامه براي اينكه بخوام اطلاعات جدول پايگاه داده رو Refresh كنم () LoadAll رو صدا مي زنم:
    در #C:

    LoadAll();

    در VB.NET:

    LoadAll()

  10. #10

    Arrow ليست برنامه Load كردن اطلاعات

    با كمي تصرف:

    در #C:

    using System.Data;
    using System.Data.SqlClient;
    .
    .
    .
    SqlConnection cnn = new SqlConnection();
    SqlDataAdapter sda = new SqlDataAdapter();
    SqlCommand cmd = new SqlCommand();
    DataSet ds = new DataSet();
    privatevoid Connect()
    {
    cnn.ConnectionString = "Data Source=Computer1;initial catalog=StorDB ;integrated security=true;";
    }
    private DataSet LoadAll()
    {
    Connect();
    cmd.CommandText = "select * from Table";
    cmd.Connection = cnn;
    sda.SelectCommand = cmd;
    cnn.Open();
    sda.Fill(ds , "Barnamenevis");
    cnn.Close();
    return ds;
    }
    private void Form1_Load(object sender, EventArgs e)
    {
    LoadAll();
    dataGridView1.DataSource = ds;
    dataGridView1 .DataMember ="Barnamenevis";
    }
    }
    }

    در VB.NET:

    Imports System.Data
    Imports System.Data.SqlClient
    PublicClass Form1
    Dim cnn As New SqlConnection()
    Dim cmd As New SqlCommand()
    Dim sda As New SqlDataAdapter()
    Dim ds As New DataSet()
    Private Sub Connect()
    cnn.ConnectionString = "Data Source=Computer1;initial catalog=StorDB ;integrated security=true;"
    End Sub
    Private Function LoadAll() As DataSet
    Connect()
    cmd.CommandText = "select * from Table"
    cmd.Connection = cnn
    sda.SelectCommand = cmd
    sda.SelectCommand.Connection = cnn
    cnn.Open()
    sda.Fill(ds, "Barnamenevis")
    cnn.Close()
    Return ds
    End Function
    PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
    LoadAll()
    DataGridView1.DataSource = ds
    DataGridView1.DataMember = "Barnamenevis"
    End Sub
    End Class

  11. #11

    Lightbulb ثبت اطلاعات

    جهت ثبت اطلاعات در جدول دو راه دارم يا به صورت parameter ثبت كنم يا اينكه بيام Transaction ثبت كنم. فعلاً با Parameter كار مي كنيم.
    كاري كه من مي خوام اينجا انجام بدم اين هستش داخل دكمه Button مربوط به Insert كردن اطلاعات درون TextBox ها (يا هر كنترلي كه به عنوان ورودي عمل كند) رو درون يه ArrayList ميريزم و در همون جا يه دستور SQL مي نويسم سپس براي Value هاي دستور SQL كه نوشتم Parameter ها رو مقداردهي مي كنم. بعد اين دستور و Parameter ها رو به روال Insert كه خواهم ساخت مي فرستم و دستور رو اجرا مي كنم.
    و در آخر هم يه LoadAll مي كنم كه به عنوان Refresh برنامه ازش استفاده بشه.
    ميام دو تا Refrence براي sqlConnection و sqlCommand و يه ArrayList مي سازم:
    در #C:

    SqlConnection cnn = newSqlConnection();
    SqlCommand cmd = newSqlCommand();
    ArrayList arr = newArrayList();

    در VB.NET:

    Dim cnn AsNew SqlConnection()
    Dim cmd AsNew SqlCommand()
    Dim arr AsNew ArrayList()

    حالا تويه دكمه Button براي مقداردهي ArrayList مي نويسم:
    در #C:

    arr.Add(textBox1.Text);
    arr.Add(textBox2.Text);
    .
    .
    .

    در VB.NET:

    arr.Add(textBox1.Text);
    arr.Add(textBox2.Text);
    .
    .
    .

    حالا در ادامه دستور بالا درون Button دستور SQL رو مشخص مي كنيم:
    در #C:

    cmd.CommandText = "insert into Shelf(Field1,Field2)Values(@Field1,@Field1)";

    در VB.NET:

    cmd.CommandText = "insert into Shelf(Field1,Field2)Values(@Field1,@Field1)";

    بعد Parameter هاي موجود رو مقدار دهي مي كنم:
    در #C:

    cmd.Parameters.Clear();
    cmd.Parameters.Add("@Field1", SqlDbType.NVarChar).Value = arr[0].ToString();
    cmd.Parameters.Add("@Field2", SqlDbType.Int).Value =int.Parse ( arr[1].ToString());
    .
    .
    .

    در VB.NET:


    cmd.Parameters.Clear();
    cmd.Parameters.Add("@Field1", SqlDbType.NVarChar).Value = arr[0].ToString();
    cmd.Parameters.Add("@Field2", SqlDbType.Int).Value =int.Parse ( arr[1].ToString());
    .
    .
    .




    حالا بايد اين cmd رو براي يه روال يا متدي كه بحثش رو كردم بفرستم. اما قبل از ارسال بايد اون رو بسازم. اين روال يا متد اين كار رو انجام مي ده:
    1. اتصال به پايگاه داده
    2. مشخص كردن آدرس پايگاه داده جهت اجرا دستور SQL
    3. باز كردن پايگاه داده
    4. اجراي دستور SQL
    5. بستن پايگاه داده
    در #C:

    privatevoid Insert(SqlCommand cmd)
    {
    Connect();
    cmd.Connection = cnn;
    cnn.Open();
    cmd.ExecuteNonQuery();
    cnn.Close();
    }

    در VB.NET:

    PrivateSub Insert(ByVal cmd As SqlCommand)
    Connect()
    cmd.Connection = cnn
    cnn.Open()
    cmd.ExecuteNonQuery()
    cnn.Close()
    EndSub

    حالا كه متد رو ساختم دوباره بر ميگردم به Button و اين دستور رو به خط آخرش اضافه مي كنم:
    در #C:

    Insert(cmd);

    در VB.NET:

    Insert(cmd)

    حالا براي اينكه متوجه بشم كه اين ركورد ثبت شده ميام LoadAll رو كه در پست هاي قبلي نوشتيم رو بهش اضافه مي كنم:
    در #C:

    LoadAll();
    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "Barnamenevis";

    در VB.NET:

    LoadAll()
    dataGridView1.DataSource = ds
    dataGridView1.DataMember = "Barnamenevis"
    آخرین ویرایش به وسیله اوبالیت به بو : دوشنبه 11 آذر 1387 در 01:10 صبح

  12. #12

    Arrow ليست برنامه ثبت كردن اطلاعات در جدول

    با كمي تصرف:
    در #C:

    using System.Data.SqlClient;
    using System.Collections;
    .
    .
    .
    SqlConnection cnn = newSqlConnection();
    SqlDataAdapter sda = newSqlDataAdapter();
    SqlCommand cmd = newSqlCommand();
    DataSet ds = newDataSet();
    ArrayList arr = newArrayList();
    privatevoid Connect()
    {
    cnn.ConnectionString = "Data Source=COMPUTER1;Initial Catalog=storDB ;Integrated Security=True;";
    }
    privateDataSet LoadAll()
    {
    Connect();
    cmd.CommandText = "select * from Table";
    cmd.Connection = cnn;
    sda.SelectCommand = cmd;
    cnn.Open();
    sda.Fill(ds, "Barnamenevis");
    cnn.Close();
    return ds;
    }
    privatevoid Form1_Load(object sender, EventArgs e)
    {
    LoadAll();
    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "Barnamenevis";
    }

    privatevoid Insert(SqlCommand cmd)
    {
    Connect();
    cmd.Connection = cnn;
    cnn.Open();
    cmd.ExecuteNonQuery();
    cnn.Close();
    }
    privatevoid button1_Click(object sender, EventArgs e)
    {

    arr.Add(textBox1.Text);
    arr.Add(textBox2.Text);
    cmd.CommandText = "insert into Shelf(Field1,Field2)Values(@Field1,@Field2)";
    cmd.Parameters.Clear();
    cmd.Parameters.Add("@Field1", SqlDbType.NVarChar).Value = arr[0].ToString();
    cmd.Parameters.Add("@Field2", SqlDbType.Int).Value =int.Parse ( arr[1].ToString());

    Insert(cmd);
    LoadAll();
    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "Barnamenevis";
    }


    در VB.NET:

    Imports System.Data
    Imports System.Data.SqlClient
    Imports System.Collections
    PublicClass Form1
    Dim cnn AsNew SqlConnection()
    Dim cmd AsNew SqlCommand()
    Dim sda AsNew SqlDataAdapter()
    Dim ds AsNew DataSet()
    Dim arr AsNew ArrayList()
    PrivateSub Connect()
    cnn.ConnectionString = "Data Source=COMPUTER1Initial Catalog=storDB Integrated Security=True"
    EndSub
    PrivateFunction LoadAll() As DataSet
    Connect()
    cmd.CommandText = "select * from Table"
    cmd.Connection = cnn
    sda.SelectCommand = cmd
    sda.SelectCommand.Connection = cnn
    cnn.Open()
    sda.Fill(ds, "Barnamenevis")
    cnn.Close()
    Return ds
    EndFunction
    PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
    LoadAll()
    DataGridView1.DataSource = ds
    DataGridView1.DataMember = "Barnamenevis"
    EndSub
    PrivateSub Insert(ByVal cmd As SqlCommand)
    Connect()
    cmd.Connection = cnn
    cnn.Open()
    cmd.ExecuteNonQuery()
    cnn.Close()
    EndSub
    PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    arr.Add(TextBox1.Text)
    arr.Add(TextBox2.Text)
    cmd.CommandText = "insert into Shelf(Field1,Field2)Values(@Field1,@Field2)"
    cmd.Parameters.Clear()
    cmd.Parameters.Add("@Field1", SqlDbType.NVarChar).Value = arr(0).ToString()
    cmd.Parameters.Add("@Field2", SqlDbType.Int).Value = Integer.Parse(arr(1).ToString())

    Insert(cmd)
    LoadAll()
    DataGridView1.DataSource = ds
    DataGridView1.DataMember = "Barnamenevis"
    EndSub
    EndClass

    آخرین ویرایش به وسیله اوبالیت به بو : دوشنبه 11 آذر 1387 در 01:39 صبح

  13. #13

    Lightbulb حذف كردن اطلاعات

    حذف كردن اطلاعات دقيقاً مشابه درج كردن اطلاعات در جدول هستش.
    تنها تفاوتي كه وجود داره در دستور SQL هستش كه درونش يه شرط قرار ميگيره و اون شرط مقدارش از يه parameter گرفته ميشه. اين مقدار گرفتن متفاوت هستش. مي تونه يه كد باشه كه درون يه TextBox هستش. مي تونه يه ID باشه كه مثلاً وقتي كاربر رويه يه ركورد از DataGridview كليك كرد برگشت داده بشه و ...
    به هر حال من ساده ترينش رو مثال مي زنم و در مرحله بعد به نحو ديگري اين Parameter رو مقدار دهي مي كنيم.
    ميام دو تا Refrence براي sqlConnection و sqlCommand و يه ArrayList مي سازم:
    در #C:

    SqlConnection cnn = newSqlConnection();
    SqlCommand cmd = newSqlCommand();
    ArrayList arr = newArrayList();

    در VB.NET:

    Dim cnn AsNew SqlConnection()
    Dim cmd AsNew SqlCommand()
    Dim arr AsNew ArrayList()

    حالا تويه دكمه Button براي مقداردهي ArrayList مي نويسم:
    در #C:

    arr.Add(textBox1.Text);

    در VB.NET:

    arr.Add(textBox1.Text)

    حالا در ادامه دستور بالا درون Button دستور SQL رو مشخص مي كنيم:
    در #C:

    cmd.CommandText = "Delete from Table Where ID= @ID)";

    در VB.NET:

    cmd.CommandText = "Delete from Table Where ID= @ID)"

    بعد Parameter رو مقدار دهي مي كنم:
    در #C:

    cmd.Parameters.Clear();
    cmd.Parameters.Add("@ID", SqlDbType.Int).Value =int.Parse ( arr[0].ToString());

    در VB.NET:

    cmd.Parameters.Clear()
    cmd.Parameters.Add("@ID", SqlDbType.Int).Value =int.Parse ( arr[0].ToString())






    حالا بايد اين cmd رو براي يه روال يا متدي كه براي Delete قراره بسازم بفرستم. اما قبل از ارسال بايد اون رو بسازم. اين روال يا متد اين كار رو انجام مي ده:
    1. اتصال به پايگاه داده
    2. مشخص كردن آدرس پايگاه داده جهت اجرا دستور SQL
    3. باز كردن پايگاه داده
    4. اجراي دستور SQL
    5. بستن پايگاه داده
    در #C:

    privatevoid Delete(SqlCommand cmd)
    {
    Connect();
    cmd.Connection = cnn;
    cnn.Open();
    cmd.ExecuteNonQuery();
    cnn.Close();
    }

    در VB.NET:

    PrivateSub Delete(ByVal cmd As SqlCommand)
    Connect()
    cmd.Connection = cnn
    cnn.Open()
    cmd.ExecuteNonQuery()
    cnn.Close()
    EndSub

    حالا كه متد رو ساختم دوباره بر ميگردم به Button و اين دستور رو به خط آخرش اضافه مي كنم:
    در #C:

    Delete(cmd);

    در VB.NET:

    Delete(cmd);

    حالا براي اينكه متوجه بشم كه اين ركورد حذف شده ميام LoadAll رو كه در پست هاي قبلي نوشتيم رو بهش اضافه مي كنم:
    در #C:

    LoadAll();
    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "Barnamenevis";

    در VB.NET:

    LoadAll()
    dataGridView1.DataSource = ds
    dataGridView1.DataMember = "Barnamenevis"
    آخرین ویرایش به وسیله اوبالیت به بو : دوشنبه 11 آذر 1387 در 01:28 صبح

  14. #14

    Arrow ليست برنامه ويرايش كردن اطلاعات

    با كمي تصرف...
    در #C:

    using System.Data.SqlClient;
    using System.Collections;
    .
    .
    .
    SqlConnection cnn = newSqlConnection();
    SqlDataAdapter sda = newSqlDataAdapter();
    SqlCommand cmd = newSqlCommand();
    DataSet ds = newDataSet();
    ArrayList arr = newArrayList();
    privatevoid Connect()
    {
    cnn.ConnectionString = "Data Source=COMPUTER1;Initial Catalog=storDB ;Integrated Security=True;";
    }
    privateDataSet LoadAll()
    {
    Connect();
    cmd.CommandText = "select * from Table";
    cmd.Connection = cnn;
    sda.SelectCommand = cmd;
    cnn.Open();
    sda.Fill(ds, "Barnamenevis");
    cnn.Close();
    return ds;
    }
    privatevoid Form1_Load(object sender, EventArgs e)
    {
    LoadAll();
    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "Barnamenevis";
    }

    privatevoid Update(SqlCommand cmd)
    {
    Connect();
    cmd.Connection = cnn;
    cnn.Open();
    cmd.ExecuteNonQuery();
    cnn.Close();
    }
    privatevoid button1_Click(object sender, EventArgs e)
    {

    arr.Add(textBox1.Text);
    arr.Add(textBox2.Text);arr.Add(textBox3.Text);

    cmd.CommandText = "Update set Field1=@Field1,Field2=@Field2 Where ID=@ID";
    cmd.Parameters.Clear();
    cmd.Parameters.Add("@Field1", SqlDbType.NVarChar).Value = arr[0].ToString();
    cmd.Parameters.Add("@Field2", SqlDbType.Int).Value =int.Parse ( arr[1].ToString());
    cmd.Parameters.Add("@ID", SqlDbType.Int).Value =int.Parse ( arr[2].ToString());

    Update(cmd);
    LoadAll();
    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "Barnamenevis";
    }

    در VB.NET:

    Imports System.Data
    Imports System.Data.SqlClient
    Imports System.Collections
    PublicClass Form1
    Dim cnn AsNew SqlConnection()
    Dim cmd AsNew SqlCommand()
    Dim sda AsNew SqlDataAdapter()
    Dim ds AsNew DataSet()
    Dim arr AsNew ArrayList()
    PrivateSub Connect()
    cnn.ConnectionString = "Data Source=COMPUTER1Initial Catalog=storDB Integrated Security=True"
    EndSub
    PrivateFunction LoadAll() As DataSet
    Connect()
    cmd.CommandText = "select * from Table"
    cmd.Connection = cnn
    sda.SelectCommand = cmd
    sda.SelectCommand.Connection = cnn
    cnn.Open()
    sda.Fill(ds, "Barnamenevis")
    cnn.Close()
    Return ds
    EndFunction
    PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
    LoadAll()
    DataGridView1.DataSource = ds
    DataGridView1.DataMember = "Barnamenevis"
    EndSub
    PrivateSub Update(ByVal cmd As SqlCommand)
    Connect()
    cmd.Connection = cnn
    cnn.Open()
    cmd.ExecuteNonQuery()
    cnn.Close()
    EndSub
    PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    arr.Add(textBox1.Text)
    arr.Add(textBox2.Text)
    arr.Add(textBox3.Text)
    cmd.CommandText = "Update set Field1=@Field1,Field2=@Field2 Where ID=@ID"
    cmd.Parameters.Clear();
    cmd.Parameters.Add("@Field1", SqlDbType.NVarChar).Value = arr[0].ToString()
    cmd.Parameters.Add("@Field2", SqlDbType.Int).Value =int.Parse ( arr[1].ToString())
    cmd.Parameters.Add("@ID", SqlDbType.Int).Value =int.Parse ( arr[2].ToString())

    Update(cmd)
    LoadAll()
    DataGridView1.DataSource = ds
    DataGridView1.DataMember = "Barnamenevis"
    EndSub
    EndClass
    آخرین ویرایش به وسیله اوبالیت به بو : دوشنبه 11 آذر 1387 در 01:44 صبح

  15. #15

    Lightbulb چند روال و متد

    مشاهده فرموديد كه ثبت كردن، حذف كردن و ويرايش كردن اطلاعات خيلي شبيه هم بودن. تقريباً تمامي كدهاشون با هم برابر به غير از درستور SQL و Parameter ها. حالا براي اينكه از تكرار كد جلوگيري بشه من يه روال براي VB و يه متد براي #C مي نويسم و بعد از مقداردهي Parameter ها اونها رو صدا مي زنم و اسمش رو ميزارم UID مخفف Update Insert Delete:
    در #C:

    private void UID(SqlCommand cmd)
    {
    Connect();
    cmd.Connection = cnn;
    cnn.Open();
    cmd.ExecuteNonQuery();
    cnn.Close();
    }

    در VB.NET:

    Private Sub Insert(ByVal cmd As SqlCommand)
    Connect()
    cmd.Connection = cnn
    cnn.Open()
    cmd.ExecuteNonQuery()
    cnn.Close()
    EndSub

    با اين كار ديگه نياري به اون متدها و روال هاي Insert و Update و Delete نيست و تمامي اين كارها در يك جا انجام ميشه.
    حالا درون Button هاي مربوطه بعد از پر كردن ArrayList و Parameter ها كد زير رو مي نويسم:
    در #C:

    UID(cmd);

    در VB.NET:

    UID(cmd)

  16. #16

    نقل قول: ليست برنامه ويرايش كردن اطلاعات

    سلام میشه در مورد قسمت مقداردهی پارامترها بیشتر توضیح بدید چون برنامه من اون قسمت رو error میگیره . همچنین میخواستم بدونم حتما باید از datgridview استفاده کرد ؟ ایا برنامه شما اطلاعات رو در داخل datagridview ,اپدیت میکنه؟

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •