एक्सेस डेटाबेस में डेटा भेजने में त्रुटि

Nov 30 2020

मेरे पास यह अपवाद है जब मैं एक्सेस डेटाबेस में अपना कोड भेजने का प्रयास करता हूं:

System.Data.OleDb.OleDbException (0x80040E07): डेटा प्रकार एक चयन अभिव्यक्ति में बेमेल

System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling (OleDbHResult घंटा) पर
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult पर (tagDBPARAMS dbParams, वस्तु एवं executeResult)
System.Data.OleDb.OleDbCommand.ExecuteCommandText पर (वस्तु एवं executeResult)
System.Data पर। OleDb.OleDbCommand.ExecuteCommand (CommandBehavior व्यवहार, ऑब्जेक्ट और निष्पादित करें)
System.Data.OleDb.OleDbCommand.ExecuteReaderternal (CommandBehavior व्यवहार, स्ट्रिंग पद्धति)
पर System.Data.OleDbObDeDomand.ommy
पर कार्य करें। , EventArgs e) में C: \ Users \ booku \ source \ repos \ KPIZ \ KPIZ \ Form2.cs: पंक्ति 110

मेरा कोड:

private void btn_save_Click(object sender, EventArgs e)
{
        try
        {
            byte[] imageBt = null;
            FileStream fstream = new FileStream(this.textBox2.Text, FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fstream);
            imageBt = br.ReadBytes((int)fstream.Length);

            connection.Open();

            OleDbCommand command = new OleDbCommand();
            command.Connection = connection;
            command.CommandText = @"INSERT INTO [SportInfo]([ID],[FirstName],[LastName],[DOB],[Sport],[DIW],[Image])" + "VALUES(@id, @Fn, @Ln, @Date, @Sports, @days ,@IMG)";
            
            command.Parameters.Add(new OleDbParameter("@Fn", Convert.ToString(txt_fname.Text)));
            command.Parameters.Add(new OleDbParameter("@Ln", Convert.ToString(txt_lname.Text)));
            command.Parameters.Add(new OleDbParameter("@Date", Convert.ToString(mtxt_dob.Text)));
            command.Parameters.Add(new OleDbParameter("@Sports", Convert.ToString(txt_sport.Text)));
            command.Parameters.Add(new OleDbParameter("@days", Convert.ToInt32(nmc_diw.Text)));
            command.Parameters.Add(new OleDbParameter("@id", Convert.ToInt32(txt_id.Text)));
            command.Parameters.Add(new OleDbParameter("@IMG", imageBt));

            command.ExecuteNonQuery();

            MessageBox.Show("Data Saved");
            connection.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Unlucky  " + ex);
            connection.Close();
        }

        try
        {
            connection.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = connection;
            string query = "select ID,LastName,FirstName,DOB,Sport,DIW, from SportInfo ";
            command.CommandText = query;

            OleDbDataAdapter da = new OleDbDataAdapter(command);
            dt = new DataTable();
            da.Fill(dt);
            dataGridView1.DataSource = dt;

            connection.Close();
        }
}

जवाब

3 ErikA Nov 30 2020 at 13:41

ओएलईडीबी पैरामीटर हमेशा स्थितिबद्ध होते हैं। इसका मतलब है कि आपके प्रश्न में मापदंडों का क्रम मापदंडों के क्रम से मेल खाने की आवश्यकता है क्योंकि वे आपके कोड में जोड़े गए हैं।

इसके अलावा, आपको एक तारीख होने के लिए अपने तिथि पैरामीटर को जोड़ने की आवश्यकता है, न कि स्ट्रिंग की।

मिलान के लिए अपने पैरामीटर के क्रम को समायोजित करें:

        command.Parameters.Add(new OleDbParameter("@id", Convert.ToInt32(txt_id.Text)));
        command.Parameters.Add(new OleDbParameter("@Fn", Convert.ToString(txt_fname.Text)));
        command.Parameters.Add(new OleDbParameter("@Ln", Convert.ToString(txt_lname.Text)));
        command.Parameters.Add(new OleDbParameter("@Date", DateTime.Parse(mtxt_dob.Text)));
        command.Parameters.Add(new OleDbParameter("@Sports", Convert.ToString(txt_sport.Text)));
        command.Parameters.Add(new OleDbParameter("@days", Convert.ToInt32(nmc_diw.Text)));
        command.Parameters.Add(new OleDbParameter("@IMG", imageBt));

यदि आदेश मेल नहीं खाता है, तो आपको बहुत सारी त्रुटियां मिलती हैं, क्योंकि अब आप अपने दिनांक कॉलम या पूर्णांक कॉलम में एक पाठ फ़ील्ड सम्मिलित करने का प्रयास कर रहे हैं।