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

مشكلة في الأستعلام ADO.NET 2.0

مغلق
بدأه CNE في 17 مارس 2006 · 9 رد · 732 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عملت اثنين textbox واحد لأسم المستخدم والآخر لكلمة المرور وزر button للتحقق في قاعدة البيانات اكسس من وجود الأسم وكلمة المرور

عملت الأستعلام على حقل واحد واشتغل الكود تمام . لكن لمن عملت استعلام عن حقلين لم يشتغل . هل من مساعد ؟

هذا الكود كاملا

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace WindowsApplication34
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\User.MDB";
            string strSQL = "SELECT * FROM ta1";

            OleDbConnection myConn = new OleDbConnection(strDSN);
            OleDbDataAdapter myCmd = new OleDbDataAdapter(strSQL, myConn);
            DataSet dtSet = new DataSet();
            

            string sqlQuery = "SELECT Name,Password FROM ta1 where Name = \'" + textBox1.Text.ToString() + " \'AND Password= \'" + textBox2.Text.ToString() + " \'";
            myCmd.SelectCommand.CommandText = sqlQuery; 
            dtSet.Clear();
            int numberOfRowsFeched = myCmd.Fill(dtSet); 

            if (numberOfRowsFeched > 0)
            {
                DataTable dTable = dtSet.Tables[0];
                   MessageBox.Show("Found","");
                } 
            else
                {
                    MessageBox.Show("not Found", ""); 

                } 
        }
    }
}

أو إذا كانت هناك طريقة أفضل لأستعلام ، فأخبروني بها

تم تعديل هذه المشاركة بواسطة CNE في 17 مارس 2006 في 06:25

#2
string sqlQuery = "SELECT Name,Password FROM ta1 where Name = '" + textBox1.Text.ToString() + "' AND Password= '" + textBox2.Text.ToString() + "'";

و أرجو أيضاً ذكر رسالة الخطأ

تم تعديل هذه المشاركة بواسطة bashmohandes في 17 مارس 2006 في 06:56

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#3

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

fddf.gif

#4

هل انت متأكد أن Password و Name في الDB تم تعريفهم على أنهم من نوع Text ؟؟؟؟

كما أنك لا تحتاج لوضع ToString() بعد textBox1.Text أو textBox2.Text لأن الText Property أساساً من نوع String

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#5

جزاك الله ألف خير أخي bashmohandes فعلا كانت المشكلة انه أحد الحقلين كان معرف كرقم والآخر نص

بارك الله فيك ونفع بك ، وزادك علما .

#6

كما قال لك الاخ bashmohandes

اذا كنت عرفت خانة كلمة المرور في قاعدة البيانات بحقل رقمي فعليك ان ترجع الى sqlQuery

وتكتبها على الشكل التالي:

string sqlQuery = "SELECT Name,Password FROM ta1 where Name = '\" + textBox1.Text + "\'  AND Password= " + textBox2.Text;

جربها وستجد الحل (h)

#7

انا اسف تاخر ردي ولم اعلم ان مشكلتك باتت محلولة :unsure:

حبيت اخدم :unsure:

#8

ألف ألف شكر أخي NiceyFriend على تفاعلك . ولو كان متأخر لكن كسبت الأجر

#9

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

وإذا كان غير موجود تقدر تسجل وكان هذا الكود

            string strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\User.MDB";
            string strSQL = "SELECT * FROM ta1";

            OleDbConnection myConn = new OleDbConnection(strDSN);
            OleDbDataAdapter myCmd = new OleDbDataAdapter(strSQL, myConn);
            DataSet dtSet = new DataSet();

            string sqlQuery = "SELECT Name FROM ta1 where Name = '" + textBox1.Text.ToString() + "'";

            myCmd.SelectCommand.CommandText = sqlQuery;

            int numberOfRowsFeched = myCmd.Fill(dtSet, "ta1");

            if (numberOfRowsFeched > 0)
            {
                MessageBox.Show("الأسم موجود جرب اسم آخر", "Password", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                try
                {
                    myCmd.InsertCommand.CommandText = "INSERT INTO ta1 (Name,Password) VALUES ('"+this.textBox1.Text+"','"+this.textBox2.Text+"')";
                    //myConn.Open();
                    myCmd.InsertCommand.Connection = myConn;
                    myCmd.InsertCommand.ExecuteNonQuery();
                  //  myConn.Close();

                    MessageBox.Show("تم اضافة الأسم بنجاح", "Password");
                }
                catch (System.Data.OleDb.OleDbException exp)
                {
                    myConn.Close();
                    MessageBox.Show(exp.Message);
                }
               

            }

الكود يتحقق من اسم المستخدم ويعمل بنجاح لكن ما يضيف الأسم الجديد في القاعدة . هل هناك حل ؟

#10

الحمدلله لقد توصلت للحل . وكان الخطأ في فتح القاعدة وهذا الكود بعد التعديل

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox3.Text != textBox2.Text)
            {
                errorProvider1.SetError(textBox3, "خطأ في تأكيد كلمة المرور");
            }
            else
            {
                errorProvider1.Clear();
            }

            string strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\User.MDB";
            string strSQL = "SELECT * FROM ta1";

            OleDbConnection myConn = new OleDbConnection(strDSN);
            OleDbDataAdapter myCmd = new OleDbDataAdapter(strSQL, myConn);
            DataSet dtSet = new DataSet();

            string sqlQuery = "SELECT Name FROM ta1 where Name = '" + textBox1.Text.ToString() + "'";
            
            myCmd.SelectCommand.CommandText = sqlQuery;

            int numberOfRowsFeched = myCmd.Fill(dtSet, "ta1");

            if (numberOfRowsFeched > 0)
            {
                MessageBox.Show("الأسم موجود جرب اسم آخر", "Password", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                try
                {
                    myConn.Open();             
                    OleDbCommand cc   =new OleDbCommand("INSERT INTO ta1 values(?,?)",myConn);
                    cc.Parameters.Add(new OleDbParameter());
                    cc.Parameters.Add(new OleDbParameter());

                    cc.Parameters[0].Value = textBox1.Text.ToString();
                    cc.Parameters[1].Value = textBox2.Text.ToString();
                    cc.ExecuteNonQuery();
                    

                    MessageBox.Show("تم اضافة الأسم بنجاح", "Password");
                    textBox1.Text = "";
                    textBox2.Text = "";
                    textBox3.Text = "";
                }
                catch (System.Data.OleDb.OleDbException exp)
                {
                    myConn.Close();
                    MessageBox.Show(exp.Message);
                }
            } 
        }

هذا الموضوع مغلق.

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