سؤال

وكتبت البرنامج الذي يشمل الكتابة والقراءة من قاعدة البيانات. عند تشغيل التطبيق ومحاولة تنفيذ الكتابة أسميه الطريقة التالية:

public static void AddMessage(string callID, string content)
    {
        string select =
            "INSERT INTO Sporocilo (oznaka_klica, smer, vsebina, prebrano, cas_zapisa) VALUES (@callId, 0, @content, 0, @insertTime)";
        SqlCommand cmd = new SqlCommand(select, conn);
        cmd.Parameters.AddWithValue("callId", callID.ToString());
        cmd.Parameters.AddWithValue("content", content);
        cmd.Parameters.AddWithValue("insertTime", "10.10.2008");
        try
        {
            conn.Open();
            cmd.ExecuteScalar();
        }
        catch(Exception ex)
        {
            string sDummy = ex.ToString();
        }
        finally
        {
            conn.Close();
        }
    }

وبعد استدعاء الأسلوب قرأت كافة السجلات من الجدول وعرضها في شكل. يمكن النظر إلى سجل مدرج قبل التحديث ولكن بعد ذلك عندما كنت الخروج من التطبيق وإلقاء نظرة على الجدول وأنا لا أرى السجل.

لا أحد يعرف ما يمكن أن يسبب مثل هذا السلوك؟

هل كانت مفيدة؟

المحلول

هل أداء الالتزام بعد ذلك؟ قد تكون قيد التشغيل بيانكم ولكن بعد ذلك لا ارتكاب التغييرات والقيام على التراجع الضمني.

وأعتقد أن معالجة الاستثناء يبدو المراوغة. لا يوجد أي نقطة اصطياد شيء ما لم تتمكن من التعامل مع الواقع بطريقة أو بأخرى. المستوى الأعلى من الإطار الخاص بك هو مكان للصيد والتقارير استثناءات غير متوقعة.

نصائح أخرى

ولقد حاولت تعيين قيمة الإرجاع للأسلوب ExecuteScalar إلى int ومن ثم التحقق قيمة مقابل الجدول؟

ExecuteScalar -

تنفيذ الاستعلام، وإرجاع العمود الأول من الصف الأول في مجموعة النتائج التي تم إرجاعها بواسطة الاستعلام. يتم تجاهل أعمدة أو صفوف إضافية

public static int AddMessage(string callID, string content)
    {
        Int32 newProdID = 0
        string select =
            "INSERT INTO Sporocilo (oznaka_klica, smer, vsebina, prebrano, cas_zapisa) VALUES (@callId, 0, @content, 0, @insertTime); SELECT CAST(scope_identity() AS int);";
        SqlCommand cmd = new SqlCommand(select, conn);
        cmd.Parameters.AddWithValue("callId", callID.ToString());
        cmd.Parameters.AddWithValue("content", content);
        cmd.Parameters.AddWithValue("insertTime", "10.10.2008");
        try
        {
            conn.Open();
            newProdID = (Int32)cmd.ExecuteScalar();
        }
        catch(Exception ex)
        {
            string sDummy = ex.ToString();
        }
        finally
        {
            conn.Close();
        }
        return (int)newProdID
    }

ولقد وجدت هذه المشكلة. I تعديل سلسلة الاتصال الذي تم إنشاؤه تلقائيا

<اقتباس فقرة>   

وسلسلة_الاتصال = "بيانات   مصدر = \ SQLEXPRESS؛ AttachDbFilename = | DataDirectory | \ URSZRDB.mdf، المتكاملة   الأمان = صحيح، العضو مثيل = صحيح "

مع

<اقتباس فقرة>   

وسلسلة_الاتصال = "بيانات   مصدر = \ SQLEXPRESS، AttachDbFilename = C: \ المستخدمين \ نيكو \ المستندات \ البصرية   ستوديو 2008 \ مشاريع \ URSZRWAPChat \ URSZRWAPChat \ URSZRDB.mdf، المتكاملة   الأمان = صحيح، العضو مثيل = صحيح "

والآن يعمل.

وانها ليست المرة الأولى التي أكتب هذا النوع من البرامج، وحتى الآن كل شيء قد ذهب جيدا بهذه الطريقة ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top