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

نام تاپیک: تشخیص اینکه رکورد ثبت شده یا نه

  1. #1

    تشخیص اینکه رکورد ثبت شده یا نه

    برای تشحیص اینکه
    cmd.ExecuteNonQuery();
    رکوردی برمیگرداند یا نه باید چه شرطی بگذاریم؟
    من شرط
    if(cmd.ExecuteNonQuery()>0)
    را گذاشتم ولی در catch می رود
    من میخواهم شرط بگذارم که اگر رکورد با موفقیت حذف، اضافه و یا اپدیت شد، پیغام موفقیت امیز دهد.

    در مورد
    executreader
    هم همین طور چه شرطی بگذاریم؟

  2. #2

    نقل قول: تشخیص اینکه رکورد ثبت شده

    سلام
    متد ExecuteNonQuery بعنوان خروجی یک عدد (int) برمیگردونه که نشونه تعداد ردیف هایی هست که با اجرای کوئری شما تغییر کردن (اضافه ، آپدیت و یا حذف شدن)
    یعنی اگر شما با Insert یک رکورد اضافه کنید و با موفقیت ثبت بشه ، نتیجه اجرای متد فوق عدد 1 خواهد بود

    احتمالا دلیل رفتن به Catch اینه که کوئری شما مشکلی داره و اساسا موقع ثبت به خطا برمیخوری


    تکمیلی:
    هیچوقت بلوک Catch و Exception رو به امان خدا ول نکنید ، کمترین کاری که میشه کرد اینه که متن استثنای رخ داده رو داخل یک MessageBox نمایش بدید تا لااقل متوجه بشید به دلیل چه خطایی سر از اونجا درآوردید :)

    بنده دیدم خیلی دوستان به این شکل می نویسند
                try            {
    //کدهای شما
    }
    catch (Exception exception)
    {


    }


    یا مثلا خیلی حال بدهند به کار به این شکل میشه
                try            {
    //کدهای شما
    }
    catch (Exception exception)
    {
    MessageBox.Show("خطایی رخ داده ");
    }



    کمترین کاری که میشه برای فهمیدن خطا کرد این است
                try            {
    //کدهای شما
    }
    catch (Exception exception)
    {
    MessageBox.Show(exception.Message);
    }


    خلاصه اینکه از اون آبجکت Exception کلی اطلاعات میشه به دست آورد که کمترینش اینی بود که عرض کردم.


    موفق باشید
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

  3. #3
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: تشخیص اینکه رکورد ثبت شده

    میتونید از تراکنش ها هم استفاده کنید تقریبا مثل تابع زیر




    public bool Execute(String sql)
    {
    Connect();
    SqlTransaction _SqlTransaction;
    _SqlTransaction = cn.BeginTransaction();
    SqlCommand cmd = new SqlCommand();
    cmd.Transaction = _SqlTransaction;
    try
    {
    cmd.Connection = cn;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = sql;
    cmd.ExecuteNonQuery();
    _SqlTransaction.Commit();
    DisConnect();
    return true;
    }
    catch
    {
    _SqlTransaction.Rollback();
    DisConnect();
    return false;
    }
    finally
    {
    DisConnect();
    }
    }



    در صورت اجرای صحی True و در غیر اینصورت false برگشت داده میشه

  4. #4

    نقل قول: تشخیص اینکه رکورد ثبت شده

    با تشکر از پاسخ خوبتان. من منظورم این است که وقتی داده به درستی وارد بانک شد و دستور اسکیول به درستی اجرا شد میخواهم پیام موفقیت امیز ثبت در سیستم را بدهم. من دستورات عملیات بانک را در یک کلاس تعریف کردم به صورت زیر
     class Operation
    {
    public static int vall = 0;
    public static void open(SqlConnection con)
    {
    try
    {
    con.Open();
    }
    catch
    {
    MessageBox.Show("در اتصال به پایگاه داده مشکل به وجود آمده است");
    }

    }

    public static void close(SqlConnection con)
    {
    try
    {
    con.Close();
    }
    catch
    {
    MessageBox.Show("در اتصال به پایگاه داده مشکل به وجود آمده است");
    }

    }

    public static void exe(string cmd_text)
    {
    SqlConnection con = new SqlConnection();
    try
    {
    con.ConnectionString = KB.connection_string;
    con.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandText = cmd_text;

    cmd.ExecuteNonQuery();
    //if (cmd.ExecuteNonQuery() > 0) { vall = 1; }
    //MessageBox.Show(cmd.ExecuteNonQuery().ToString());
    con.Close();
    }
    catch (SqlException ex)
    {

    MessageBox.Show("در اتصال به پایگاه داده مشکل به وجود آمده است");
    }
    catch (IOException)
    { }
    catch (DivideByZeroException)
    { }

    catch
    { }
    finally
    {
    con.Close();
    }

    }


    و در خود دکمه ثبت مینویسم
     Operation.exe(sq);

    MessageBox.Show("ثبت با موفقیت انجام شد");


    ولی در هر صورت چه داده ثبت شود چه نشود پیغام موفقیت امیز میدهد

  5. #5
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: تشخیص اینکه رکورد ثبت شده

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

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

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

  1. تشخیص اینکه K فشرده شده یا کلید جهت نمای چپ؟
    نوشته شده توسط s.kamal در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 5
    آخرین پست: شنبه 23 آبان 1394, 21:25 عصر
  2. سوال: راه مناسب برای تشخیص اینکه منو فرزند دارد یا نه
    نوشته شده توسط bftarane در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: سه شنبه 05 آذر 1392, 20:16 عصر
  3. تست اینکه وارد سایت شده یا نه
    نوشته شده توسط mirza1 در بخش توسعه نرم افزار تحت وب
    پاسخ: 0
    آخرین پست: سه شنبه 09 خرداد 1391, 11:43 صبح
  4. تشخیص اینکه دیتابیس Attach هست یا نه
    نوشته شده توسط abadanboy در بخش SQL Server
    پاسخ: 4
    آخرین پست: چهارشنبه 01 اسفند 1386, 12:55 عصر
  5. آیا دامین ثبت شده یا نه ؟
    نوشته شده توسط Happy_davood در بخش PHP
    پاسخ: 5
    آخرین پست: شنبه 24 بهمن 1383, 00:01 صبح

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

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