نمایش نتایج 1 تا 12 از 12

نام تاپیک: دستور Delete در یک برنامه ی 3 لایه

  1. #1
    کاربر تازه وارد آواتار mahdi101
    تاریخ عضویت
    تیر 1392
    محل زندگی
    اصفهان
    پست
    94

    دستور Delete در یک برنامه ی 3 لایه

    سلام بر همگی
    من می خوام یک دستور delete بنویسم ولی هر کاری می کنم یه جاییش یه اروری میده .حالا تمام مراحلی رو که انجام دادم می نویسم به نظر شما اشتباه از کجاست
    1) در بانک یکstored procedures به نام Delete_customer ایجاد کردم:

    delete from customer_B where c_id='@id'


    2) کد های بخش DLL:
            public void docommand(string spname, SqlParameter[] p)
    {

    SqlCommand cmd = new SqlCommand(spname, con);
    cmd.Parameters.AddRange(p);
    cmd.CommandType = CommandType.StoredProcedure;
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
    }
    public DataTable select(string spname, SqlParameter[] p)
    {
    SqlDataAdapter da = new SqlDataAdapter(spname, con);
    da.SelectCommand.CommandType = CommandType.StoredProcedure;
    da.SelectCommand.Parameters.AddRange(p);
    DataTable dt = new DataTable();
    da.Fill(dt);
    return dt;
    }

    3) کد های بخش BLL :

    class BLL_customer_B
    {
    DAL d = new DAL();

    int id;

    public int Id
    {
    get { return id; }
    set { id = value; }
    }


    public void delete()
    {
    SqlParameter[] p = new SqlParameter[1];
    p[0] = new SqlParameter();
    p[0].ParameterName = "@id";
    p[0].SqlDbType = System.Data.SqlDbType.BigInt;
    p[0].Value = id;
    d.docommand("Delete_customer", p);
    }



    4) کدی که روی کلید Delete نوشتم:

    dataGridView1[0, dataGridView1.CurrentRow.Index].Value.ToString();
    cb.delete();




    فکنم مشکل از قسمت 4 با شه .دقیقا نمی دونم.
    نمی دونم چه شکلی سطون انتخابی در data gride view رو با متغیر id هماهنگ کنم که هرچی در datagride بود رو در id بریزه و مقدار id بره تو bll و حذف بشه.
    لطفا کمک کنید.
    ممنون

  2. #2
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: دستور Delete در یک برنامه ی 3 لایه

    نمی دونم چه شکلی سطون انتخابی در data gride view رو با متغیر id هماهنگ کنم که هرچی در datagride بود رو در id بریزه و مقدار id بره تو bll و حذف بشه.
    لطفا کمک کنید.
    .................................................. .........................................

    رویداد کلیک باتن:
    private void button2_Delete_Click(object sender, EventArgs e)
    {
    int custID = Convert.ToInt16(dataGridView1[0, dataGridView1.CurrentRow.Index].Value);
    DAL.Accessor.Delete(custID);
    FillGrid();


    }

    2 . DAL :
    public static void Delete(int id)
    {
    // buyerId = buyerIdForEdit;
    DataClasses1DataContext db = new DataClasses1DataContext();
    var matchedcall = (from c in db.GetTable<Table_pb>()
    where c.id == id
    select c).Single();
    try
    {

    db.Table_pbs.DeleteOnSubmit(matchedcall);
    db.SubmitChanges();
    }
    catch (Exception ex)
    {
    throw ex;
    }
    }


    3 . Bll :
    namespace Phone_Book.BLL
    {
    public class PhonBookEntry
    {
    public int ID { get; set; }
    public String FirstName { get; set; }
    public String LastName { get; set; }
    public String Num1 { get; set; }
    public String Num2 { get; set; }
    public String Num3 { get; set; }
    public String Fax { get; set; }
    public String Email { get; set; }
    public String Post { get; set; }

    }
    }

  3. #3
    کاربر تازه وارد آواتار mahdi101
    تاریخ عضویت
    تیر 1392
    محل زندگی
    اصفهان
    پست
    94

    نقل قول: دستور Delete در یک برنامه ی 3 لایه

    آقای KHOKHAN پس به نظر شما ااین dal که من نوشتم اشتباهه ؟

  4. #4
    کاربر تازه وارد آواتار mahdi101
    تاریخ عضویت
    تیر 1392
    محل زندگی
    اصفهان
    پست
    94

    نقل قول: دستور Delete در یک برنامه ی 3 لایه

    اینم خطایی که میده:
    Procedure delete_customer has no parameters and arguments were supplied.

  5. #5
    کاربر تازه وارد آواتار mahdi101
    تاریخ عضویت
    تیر 1392
    محل زندگی
    اصفهان
    پست
    94

    نقل قول: دستور Delete در یک برنامه ی 3 لایه

    لطفا راهنمایی کنید ....
    خیلی ضروریه .....

  6. #6
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: دستور Delete در یک برنامه ی 3 لایه

    نقل قول نوشته شده توسط mahdi101 مشاهده تاپیک
    اینم خطایی که میده:
    Procedure delete_customer has no parameters and arguments were supplied.
    کدهای شما مربوط به معماری Ado می شه که stored procedure موجود در بانک رو فراخوانی و آ دی گزینه انتخابی توسط کاربر رو به پارامتر موجود stored procedure اختصاص می ده
    مضمون پیام اینه که پروکودور شما فاقد پارامتر می باشد
    احتمالا کدها رو از دوجای مختلف اقتباس کردید و سعی دارید با هم مخلوط کنید

  7. #7
    کاربر تازه وارد آواتار mahdi101
    تاریخ عضویت
    تیر 1392
    محل زندگی
    اصفهان
    پست
    94

    نقل قول: دستور Delete در یک برنامه ی 3 لایه

    نقل قول نوشته شده توسط khokhan مشاهده تاپیک
    کدهای شما مربوط به معماری Ado می شه که stored procedure موجود در بانک رو فراخوانی و آ دی گزینه انتخابی توسط کاربر رو به پارامتر موجود stored procedure اختصاص می ده
    مضمون پیام اینه که پروکودور شما فاقد پارامتر می باشد
    احتمالا کدها رو از دوجای مختلف اقتباس کردید و سعی دارید با هم مخلوط کنید
    یعنی کارم اشتباه است؟؟
    درست من با دستور های insert , update هم همین مشکل رو دارم ، اما وقتی برنامه رو دیباگ می کنم (برای دستور insert ) تمام متغیر هام پارامتر میگیرند اما در لایه DAl در کد :
      cmd.ExecuteNonQuery();

    همون ارور رو میده .
    به نظر شما چی کار کنم؟

  8. #8
    کاربر تازه وارد آواتار mahdi101
    تاریخ عضویت
    تیر 1392
    محل زندگی
    اصفهان
    پست
    94

    نقل قول: دستور Delete در یک برنامه ی 3 لایه


  9. #9
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,717

    نقل قول: دستور Delete در یک برنامه ی 3 لایه

    سلام.
    تاپیک زیر رو ببینید تا مفاهیم رو متوجه بشید.
    https://barnamenevis.org/showthread.p...A7%DB%8C%D9%87

  10. #10
    کاربر تازه وارد آواتار mahdi101
    تاریخ عضویت
    تیر 1392
    محل زندگی
    اصفهان
    پست
    94

    نقل قول: دستور Delete در یک برنامه ی 3 لایه

    شرمنده من مثل اون تاپیک هم عمل کردم ولی دوباره همون ارور رو میده:
    اگه میشه یه نگاه به برنامه بندازین ببینین مشکلش چیه(لطفا):
    ممنون.
    http://www.uplooder.net/cgi-bin/dl.c...a15ee7e0f4f0f2

  11. #11
    کاربر تازه وارد آواتار mahdi101
    تاریخ عضویت
    تیر 1392
    محل زندگی
    اصفهان
    پست
    94

    نقل قول: دستور Delete در یک برنامه ی 3 لایه

    جوابی نبود ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

  12. #12
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: دستور Delete در یک برنامه ی 3 لایه

    نقل قول نوشته شده توسط mahdi101 مشاهده تاپیک
    جوابی نبود ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
    اول از همه گفتن این نکته لازمه که ..........................................
    کدهای مربوط به کلاس BLL رو به این شکل بنویسین :
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace WindowsFormsApplication2
    {
    public class customer
    {
    public int c_id { get; set; }
    public string c_name { get; set; }
    public string c_family { get; set; }
    public int c_mobile { get; set; }
    public int c_tell { get; set; }
    public string c_adress { get; set; }
    }
    }rror('Invalid customer Id',16,1)


    واین هم برای کلاس DAL :
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    using System.Data;
    using System.Collections;

    namespace WindowsFormsApplication2
    {
    public class customer_DAL
    {
    public static DataTable getcustomers()
    {
    SqlConnection con = new SqlConnection(Database.ConnectionString);
    SqlDataAdapter da = new SqlDataAdapter("customers", con);
    da.SelectCommand.CommandType = CommandType.StoredProcedure;
    DataSet ds = new DataSet();
    da.Fill(ds, "customer_B");
    return ds.Tables[0];
    }

    public static ArrayList GetBook(int bookid)
    {
    ArrayList sequence = new ArrayList();
    SqlConnection con = new SqlConnection(Database.ConnectionString);
    try
    {
    con.Open();
    SqlCommand cmd = new SqlCommand("getcustomers", con);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@c_id", bookid);
    SqlDataReader dr = cmd.ExecuteReader();
    if (dr.Read())
    {
    customer b = new customer();
    b.c_id =int.Parse( dr["c_id"].ToString());
    b.c_name = dr["c_name"].ToString();
    b.c_family = dr["c_family"].ToString();
    b.c_mobile = int.Parse(dr["c_mobile"].ToString());
    b.c_tell = int.Parse(dr["c_tell"].ToString());
    b.c_adress = dr["c_adress"].ToString();
    sequence.Add(b);
    return sequence;
    }
    else
    return null;
    }
    catch (Exception ex)
    {
    return null;
    }
    finally
    {
    con.Close();
    }
    }

    public static string Addcustomer(string c_name,string c_family,int c_mobile,int c_tell,string c_adress)
    {
    SqlConnection con = new SqlConnection(Database.ConnectionString);
    try
    {
    con.Open();
    SqlCommand cmd = new SqlCommand("Addcustomers", con);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@c_name ",c_name);
    cmd.Parameters.AddWithValue("@c_family", c_family);
    cmd.Parameters.AddWithValue("@c_mobile", c_mobile);
    cmd.Parameters.AddWithValue("@c_tell", c_tell);
    cmd.Parameters.AddWithValue("@c_adress", c_adress);
    cmd.ExecuteNonQuery();
    return null;
    }
    catch (Exception ex)
    {
    return ex.Message;
    }
    finally
    {
    con.Close();
    }
    }

    public static string DeleteBook(int bookid)
    {
    SqlConnection con = new SqlConnection(Database.ConnectionString);
    try
    {
    con.Open();
    SqlCommand cmd = new SqlCommand("Deletecustomer", con);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@cid", bookid);
    cmd.ExecuteNonQuery();
    return null;
    }
    catch (Exception ex)
    {
    return ex.Message;
    }
    finally
    {
    con.Close();
    }
    }
    public static string Updatecustomer(int c_id,string c_name, string c_family, int c_mobile, int c_tell, string c_adress)
    {
    SqlConnection con = new SqlConnection(Database.ConnectionString);
    try
    {
    con.Open();
    SqlCommand cmd = new SqlCommand("Updatecost", con);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@c_id ", c_id);
    cmd.Parameters.AddWithValue("@c_name ", c_name);
    cmd.Parameters.AddWithValue("@c_family", c_family);
    cmd.Parameters.AddWithValue("@c_mobile", c_mobile);
    cmd.Parameters.AddWithValue("@c_tell", c_tell);
    cmd.Parameters.AddWithValue("@c_adress", c_adress);
    cmd.ExecuteNonQuery();
    return null;
    }
    catch (Exception ex)
    {
    return ex.Message;
    }
    finally
    {
    con.Close();
    }
    }
    }
    }

    حالا در رویداد کلیک باتن حذف می نویسین :
    private void button1_Click(object sender, EventArgs e)
    {
    string msg = customer_DAL.DeleteBook(Int32.Parse(textBox1.Text) );
    if (msg == null)
    {
    MessageBox.Show("برو خدا رو شکر کن حذف صورت گرفت وگرنه....");
    fillgrid();
    }
    else
    MessageBox.Show("Error -> " + msg);

    }

    و این هم پروژه حضرتعالی با معماری چند لایه و stored procedures به همراه امکان افزودن جدید و حذف و ویرایش ............................
    فایل های ضمیمه فایل های ضمیمه

تاپیک های مشابه

  1. برنامه نویسی چند لایه
    نوشته شده توسط niksoft در بخش VB.NET
    پاسخ: 2
    آخرین پست: چهارشنبه 27 تیر 1386, 00:22 صبح
  2. استاندارد ماکروسافت برای برنامه نویسی 5 لایه
    نوشته شده توسط cactuskhan در بخش ASP.NET Web Forms
    پاسخ: 11
    آخرین پست: دوشنبه 24 اردیبهشت 1386, 12:22 عصر
  3. خطا در استفاده از دستور DELETE در کلاس IN
    نوشته شده توسط Behrouz_Rad در بخش SQL Server
    پاسخ: 1
    آخرین پست: چهارشنبه 16 اسفند 1385, 14:31 عصر
  4. ضرورت وجود دو دستور زیر در ابتدای برنامه:
    نوشته شده توسط zahra_67 در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 1
    آخرین پست: پنج شنبه 04 آبان 1385, 23:59 عصر
  5. برنامه نویسی چند لایه در دلفی
    نوشته شده توسط Mahdavi در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 8
    آخرین پست: چهارشنبه 28 آبان 1382, 01:36 صبح

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

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