الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية عمل SQLException في ASP.NET

بدأه muzamil87 في 24 فبراير 2011 · 8 رد · 743 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

أخواني الكرام, لدي مشكله بسيطه واحتاج مساعدتكم فيها

عند عمل ادخال لقاعدة البيانات أريد التأكد أولا إذا كان المدخل موجود في قاعدة البيانات أم لا, لدي الكود التالي:

<td align="center">
                                   <div align="center">
                                        <asp:GridView ID="GridView2" runat="server" AllowPaging="True" 
                                            AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="Matric_No" 
                                            DataSourceID="SqlDataSource2" EnableModelValidation="True" ForeColor="#333333" 
                                            GridLines="None" style="text-align: center">
                                            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                                            <Columns>
                                                <asp:CommandField ShowSelectButton="True" />
                                                <asp:BoundField DataField="R_Email" HeaderText="Student Email" 
                                                    SortExpression="R_Email" />
                                                <asp:BoundField DataField="Matric_No" HeaderText="Matric No" 
                                                    SortExpression="Matric_No" />
                                                <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
                                                <asp:BoundField DataField="Super1" HeaderText="Super 1 Name" 
                                                    SortExpression="Super1" />
                                                <asp:BoundField DataField="Super2" HeaderText="Super 2 Name" 
                                                    SortExpression="Super2" />
                                                <asp:BoundField DataField="Super3" HeaderText="Super 3 Name" 
                                                    SortExpression="Super3" />
                                            </Columns>
                                            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                                            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                                            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                            <EditRowStyle BackColor="#999999" />
                                            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                                        </asp:GridView>
                                        <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
                                            ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
                                            SelectCommand="SELECT [R_Email], [Matric_No], [Name], [Super1], [Super2], [Super3] FROM [Register]">
                                        </asp:SqlDataSource>
                                        <asp:Label ID="Matric0" runat="server"></asp:Label>
                                        <asp:Button ID="Button3" runat="server" Text="Search" />
                                        <asp:Button ID="Button4" runat="server" Text="Register" />
                                        <asp:Label ID="Email0" runat="server" Visible="False"></asp:Label>
                                        <asp:Label ID="Name0" runat="server" Visible="False"></asp:Label>
                                        <asp:Label ID="Super4" runat="server" Visible="False"></asp:Label>
                                        <asp:Label ID="Super5" runat="server" Visible="False"></asp:Label>
                                        <asp:Label ID="Super6" runat="server" Visible="False"></asp:Label>
                                        <asp:Label ID="Pass2" runat="server" Visible="False"></asp:Label>
                                        <asp:Label ID="Label16" runat="server" ForeColor="Red"></asp:Label>
                                        <asp:Label ID="Label17" runat="server"></asp:Label>
                                    </div>
                                    <div>
                                        <asp:GridView ID="GridView3" runat="server">
                                        </asp:GridView>
                                        <asp:SqlDataSource ID="ds1" runat="server" 
                                            ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
                                            SelectCommand="SELECT * FROM [Student]"></asp:SqlDataSource>
                                        <br />
                                    </div>
                                                                    </td>

حيث أن المستخدم يقوم باختيار الصف المطلوب البحث عنه في ملف Excel وبعد الضغط على بحث تظهر النتائج في جدول اخر.. ما اريد عمله هو عند الضغط على تسجيل, يقوم الكود بالتأكد اذا كانت القيمه المدخله موجوده في قاعدة البيانات أم لا

اذا كانت القيمه موجوده فالمفترض أن تظهر رسالة خطأ بأن المدخل موجود في قاعدة البيانات, علما أن ال

Primary key هو الذي يحدد اذا كان المدخل موجود ام لا

Primarykey = Matric_No

بعد البحث عن حل للمشكله وجدت ان الطريقه تكون باضافة Try Catch للتأكد من القيمه قبل ادخالها في قاعدة البيانات , ولكن بعد محاولات كثيره في الكود لم اتوصل الى الطريقه الصحيحه واتمنى الاقي عندكم الحل

كود ادخال البيانات:

        ds.InsertCommand = "insert into Student(Matric,Name,Email,Super1,Super2,Super3,Password) values('" + matric.Text + "','" + name.Text + "','" + email.Text + "','" + Super1.Text + "','" + Super2.Text + "','" + Super3.Text + "','" + Pass.Text + "')"
        ds.Insert()

مع العلم أن رسالة الخطأ هي:

Violation of PRIMARY KEY constraint 'PK_Student'. Cannot insert duplicate key in object 'dbo.Student'.

اسف على الاطاله واتمنى الاقي عندكم المساعده

تقبلوا تحياتي

#2
Try
	 ds.InsertCommand = "insert into Student(Matric,Name,Email,Super1,Super2,Super3,Password) values('" + matric.Text + "','" + name.Text + "','" + email.Text + "','" + Super1.Text + "','" + Super2.Text + "','" + Super3.Text + "','" + Pass.Text + "')"
     ds.Insert()
Catch sqlEx as SQLException
	هنا تتعامل مع خطأ قاعدة البيانات المتغير sqlEx يحوي معلومات عن الخطأ
Catch ex as Exception
	هنا تتعامل مع أي أخطاء أخرى المتغير ex يحوي معلومات عن الخطأ
End Try
#3
System Down كتب:

Try
     ds.InsertCommand = "insert into Student(Matric,Name,Email,Super1,Super2,Super3,Password) values('" + matric.Text + "','" + name.Text + "','" + email.Text + "','" + Super1.Text + "','" + Super2.Text + "','" + Super3.Text + "','" + Pass.Text + "')"
 	ds.Insert()
Catch sqlEx as SQLException
	هنا تتعامل مع خطأ قاعدة البيانات المتغير sqlEx يحوي معلومات عن الخطأ
Catch ex as Exception
	هنا تتعامل مع أي أخطاء أخرى المتغير ex يحوي معلومات عن الخطأ
End Try

شاكر لك ردك اخي الكريم, ولكن عندي استفسار .. في الكود انت كاتب:

Catch sqlEx as SQLException

هنا تتعامل مع خطأ قاعدة البيانات المتغير sqlEx يحوي معلومات عن الخطأ

هل تقصد اني من المفروض ان اكتب رسالة الخطأ التي تظهر للمستخدم ؟

وكذلك الكود:

Catch ex as Exception

هنا تتعامل مع أي أخطاء أخرى المتغير ex يحوي معلومات عن الخطأ

اسف على الاطاله

#4

هناك عدة طرق للتعامل مع الخطأ غير إخراج رسالة خطأ. قد تربد تسجيل هذا الخطأ في سجل ما، أو قد تريد أن تبدأ عملية أخرى ... إلخ. حسب متطلب البرنامج.

بالنسبة للشطر الثاني فهو يتعامل مع أي خطأ آخر لا يندرج تحت أخطاء الـSQL

#5

طيب تمام, في حالتي احتاج الى التعامل مع خطأ ال SQL فقط, حددت في الجدول في قاعدة البيانات Matric_NO as Primary key وما احتاجه هو:

عندما يضغط المستخدم على زر التسجيل, يعمل الكود تبع ال Try catch واذا كان المدخل موجود في الجدول يقوم يظهر رساله بأن المدخل موجود في الجدول

كيف يمكنني عمل ذلك, علماً بأن رسالة الخطأ كالتالي:

Violation of PRIMARY KEY constraint 'PK_Student'. Cannot insert duplicate key in object 'dbo.Student'.
#6

للرفع

الرجاء المساعده يا اخوان جزاكم الله خير

#7

اخي الكريم تأكد من المدخل انه فريد لا يتكرر هو مفتاح رئيسي ............ هنالك خلل بعملية انتقاء الشرط

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#8

انا فاهم نص الخطأ بس طلبي كالتالي:

اذا كان المدخل موجود في قاعدة البيانات عندها تظهر رسالة توضح ان المدخل موجود مسبقا ولا يمكن ادخاله مره اخرى ,, حاولت عن طريق Try Catch ولكن حتى الان لم استطع كتابة الكود بالشكل الصحيح لذلك طالب مساعدتكم في حل المشكله جزاكم الله خير

#9

أرجو أن تقوم بوضع الكود الذي قمت بكتابته ............ اقصد عبارة try .... catch

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

مواضيع مشابهة