Consulta parametrizada para insertar valores

2 minutos de lectura

Consulta parametrizada para insertar valores
sreenath ganga

Estaba tratando de insertar valores en una base de datos de Access usando una consulta parametrizada:

private void button1_Click(object sender, EventArgs e)
        {
            if (validationcontrol())
            {
                MessageBox.Show(cmbjobcode.SelectedValue.ToString());
                OleDbConnection oleDbConnection1 = new System.Data.OleDb.OleDbConnection(connString);
                oleDbConnection1.Open();
                OleDbCommand oleDbCommand1 = new System.Data.OleDb.OleDbCommand("INSERT INTO quotationmastertable (quotationcode ,jobcode , jobpk , sillabordercharges , battabordercharges , driverpayment , rent , extra , total , discount , remark ,amount ) Values (?,?,?,?,?,?,?,?,?,?,?,?) ", oleDbConnection1);
                oleDbCommand1.Parameters.Add(txtquotationno.Text);
                oleDbCommand1.Parameters.Add(cmbjobcode.Text);
                oleDbCommand1.Parameters.Add(cmbjobcode.SelectedValue);
                oleDbCommand1.Parameters.Add(int.Parse(txtsilabordercharges.Text));
                oleDbCommand1.Parameters.Add(int.Parse(txtbattacharges.Text));
                oleDbCommand1.Parameters.Add(int.Parse(txtdriverpayment.Text));
                oleDbCommand1.Parameters.Add(int.Parse(txtrent.Text));
                oleDbCommand1.Parameters.Add(int.Parse(txtextra.Text));
                oleDbCommand1.Parameters.Add(int.Parse(txttotal.Text));
                oleDbCommand1.Parameters.Add(int.Parse(txtdiscount.Text));
                oleDbCommand1.Parameters.Add(txtremark.Text);
                oleDbCommand1.Parameters.Add(int.Parse(txtamount.Text));
                oleDbCommand1.CommandType = CommandType.Text;
                oleDbCommand1.ExecuteNonQuery();
                oleDbConnection1.Close();
                MessageBox.Show(txtquotationno.Text);

            }
        }

pero recibo una excepción en la primera línea:

oleDbCommand1.Parameters.Add(txtquotationno.Text);

La excepción es

OleDbParameterCollection solo acepta objetos de tipo OleDbParameter no nulos, no objetos String.

Soy nuevo en la programación; ¿alguien puede ayudarme a señalar mis errores?

Un solo parámetro para el Add El objeto está esperando un objeto OleDBParameter. Solo estás pasando cadenas y datos.

Una solución simple sería usar el AddWithValue método:

oleDbCommand1.Parameters.AddWithValue("?", txtquotationno.Text);
oleDbCommand1.Parameters.AddWithValue("?", cmbjobcode.Text);

OleDB realmente no usa nombres de parámetros, está basado en índices, por lo que puede pasar el signo de interrogación para cada uno de sus parámetros como nombre. Tú hacer debe asegurarse de que sus parámetros estén en el mismo orden que su declaración de consulta.

Está intentando agregar una cadena a una colección de parámetros. Prueba esto (cambiando OleDbType.VarChar, 50 al tipo real de la columna de datos en su base de datos.

oleDbCommand1.Parameters.Add("@quot", OleDbType.VarChar, 50).Value =  txtquotationno.Text;

Consulte el msdn para ver un ejemplo: http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbparameter.aspx

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad