Insertar un Registro

13/11/2006 - 20:37 por Daniel Maldonado | Informe spam
Estimados, tengo una tabla que se llama Localidades y tiene dos campos
sencillisimos (En SqlServer)

localidades
idlocalidad Integer;
nombrelocalidad varchar;

y quiero insertar un Registro con este código y ejecuto el mismo y me dice.

"DEBE DECLARAR LA VARIABLE @paridlocalidad"

y sin embargo la variable esta definida.

Que estoy haciendo mal ???.



/* Creo la Conexión y la Abro */

string Cadena = "Auto Translate=True;Integrated Security=SSPI;User
ID=sa;Data Source=PC_TANGONEW;Tag with column collation when
possible=False;Initial Catalog=CSHARP;Use Procedure for
Prepare=1;Provider='SQLOLEDB.1';Persist Security Info=False;Workstation
ID=DIABLA;Use Encryption for Data=False;Packet Size@96;"; OleDbConnection
MiConexion = new OleDbConnection(Cadena); MiConexion.Open();

MessageBox.Show(MiConexion.State.ToString());

/* Creo el ComandoSQL */

string strCadenaInsert = "insert into localidades
(idlocalidad,nombrelocalidad) values (@paridlocalidad,@parnombrelocalidad)";

OleDbCommand ComandoSQL = new OleDbCommand(strCadenaInsert,MiConexion);

/* A esos parametros los agrego al comando SQL */

ComandoSQL.Parameters.Add(new
OleDbParameter("paridlocalidad",OleDbType.Integer));

ComandoSQL.Parameters.Add(new
OleDbParameter("parnombrelocalidad",OleDbType.VarChar));


try

{

ComandoSQL.ExecuteNonQuery();

}

catch (System.Data.OleDb.OleDbException exc4)

{

MessageBox.Show(exc4.Message);

}

finally

{

MiConexion.Close();

}

Preguntas similare

Leer las respuestas

#1 Bela Istok
13/11/2006 - 21:17 | Informe spam
Hola, 2 cosas:

1.- Porque utilizas Oledb* en ves de SQL* si estas conectandote contra SQL
Server.
2.- Cuando les pases los parametros pon los @ al principio para decirle que
esas son las variables ex: new
OleDbParameter("@paridlocalidad",OleDbType.Integer));



Saludos,

Bela Istok

"Daniel Maldonado" wrote in message
news:
Estimados, tengo una tabla que se llama Localidades y tiene dos campos
sencillisimos (En SqlServer)

localidades
idlocalidad Integer;
nombrelocalidad varchar;

y quiero insertar un Registro con este código y ejecuto el mismo y me
dice.

"DEBE DECLARAR LA VARIABLE @paridlocalidad"

y sin embargo la variable esta definida.

Que estoy haciendo mal ???.



/* Creo la Conexión y la Abro */

string Cadena = "Auto Translate=True;Integrated Security=SSPI;User
ID=sa;Data Source=PC_TANGONEW;Tag with column collation when
possible=False;Initial Catalog=CSHARP;Use Procedure for
Prepare=1;Provider='SQLOLEDB.1';Persist Security Info=False;Workstation
ID=DIABLA;Use Encryption for Data=False;Packet ;";
OleDbConnection
MiConexion = new OleDbConnection(Cadena); MiConexion.Open();

MessageBox.Show(MiConexion.State.ToString());

/* Creo el ComandoSQL */

string strCadenaInsert = "insert into localidades
(idlocalidad,nombrelocalidad) values
(@paridlocalidad,@parnombrelocalidad)";

OleDbCommand ComandoSQL = new OleDbCommand(strCadenaInsert,MiConexion);

/* A esos parametros los agrego al comando SQL */

ComandoSQL.Parameters.Add(new
OleDbParameter("paridlocalidad",OleDbType.Integer));

ComandoSQL.Parameters.Add(new
OleDbParameter("parnombrelocalidad",OleDbType.VarChar));


try

{

ComandoSQL.ExecuteNonQuery();

}

catch (System.Data.OleDb.OleDbException exc4)

{

MessageBox.Show(exc4.Message);

}

finally

{

MiConexion.Close();

}





Respuesta Responder a este mensaje
#2 Daniel Maldonado
13/11/2006 - 22:01 | Informe spam
LE AGREGUE, LE SAQUE, LE CAMBIE LOS NOMBRES A LAS VARIABLES, CAMBIE LA
CONSULTA.

TOQUE TODO

y me sigue saliendo el mismo cartel

DEBE DEFINIR LA VARIABLE paridlocalidad



/* Creo la Conexión y la Abro */

string Cadena = "Auto Translate=True;Integrated Security=SSPI;User
ID=sa;Data Source=PC_TANGONEW;Tag with column collation when
possible=False;Initial Catalog=CSHARP;Use Procedure for
Prepare=1;Provider='SQLOLEDB.1';Persist Security Info=False;Workstation
ID=DIABLA;Use Encryption for Data=False;Packet ;"; // La Cadena de
Conexión

OleDbConnection MiConexion = new OleDbConnection(Cadena); // Creo la
Conexión a la Base de Datos y le paso la cadena de conexión

MiConexion.Open();

MessageBox.Show(MiConexion.State.ToString());

/* Creo el ComandoSQL */

string strCadenaInsert = "insert into localidades
(idlocalidad,nombrelocalidad) values (@paridlocalidad,@parnombrelocalidad)";

OleDbCommand ComandoSQL = new OleDbCommand(strCadenaInsert,MiConexion);

ComandoSQL.CommandType = CommandType.Text;


/* A esos parametros los agrego al comando SQL */

ComandoSQL.Parameters.Add(new
OleDbParameter("@paridlocalidad",OleDbType.Integer));

ComandoSQL.Parameters.Add(new
OleDbParameter("@parnombrelocalidad",OleDbType.VarChar));


ComandoSQL.Parameters["@paridlocalidad"].Value = 20;

ComandoSQL.Parameters["@parnombrelocalidad"].Value = "Descripcion";


try

{

ComandoSQL.ExecuteNonQuery();

}

catch (System.Data.OleDb.OleDbException exc4)

{

MessageBox.Show(exc4.Message);

}

finally

{

MiConexion.Close();

}

}

private void button3_Click_1(object sender, System.EventArgs e)

{

try

{

this.oleDbDataAdapter1.Update(this.dataSet1,"xcur_clientes");

}

catch (System.Data.OleDb.OleDbException ex1)

{

/* aqui capturo un error especificamente de OleDb */

MessageBox.Show(" Error del tipo OLEDb " + ex1.Message);

}

catch (System.Exception ex2)

{

/* si se produce otro error que no sea de OleDb y no este comtemplado */

MessageBox.Show(" Error del tipo GENERAL " + ex2.Message);

}

finally

{


}


"Bela Istok" escribió en el mensaje
news:
Hola, 2 cosas:

1.- Porque utilizas Oledb* en ves de SQL* si estas conectandote contra SQL
Server.
2.- Cuando les pases los parametros pon los @ al principio para decirle


que
esas son las variables ex: new
> OleDbParameter("@paridlocalidad",OleDbType.Integer));

Saludos,

Bela Istok

"Daniel Maldonado" wrote in


message
news:
> Estimados, tengo una tabla que se llama Localidades y tiene dos campos
> sencillisimos (En SqlServer)
>
> localidades
> idlocalidad Integer;
> nombrelocalidad varchar;
>
> y quiero insertar un Registro con este código y ejecuto el mismo y me
> dice.
>
> "DEBE DECLARAR LA VARIABLE @paridlocalidad"
>
> y sin embargo la variable esta definida.
>
> Que estoy haciendo mal ???.
>
>
>
> /* Creo la Conexión y la Abro */
>
> string Cadena = "Auto Translate=True;Integrated Security=SSPI;User
> ID=sa;Data Source=PC_TANGONEW;Tag with column collation when
> possible=False;Initial Catalog=CSHARP;Use Procedure for
> Prepare=1;Provider='SQLOLEDB.1';Persist Security Info=False;Workstation
> ID=DIABLA;Use Encryption for Data=False;Packet ;";
> OleDbConnection
> MiConexion = new OleDbConnection(Cadena); MiConexion.Open();
>
> MessageBox.Show(MiConexion.State.ToString());
>
> /* Creo el ComandoSQL */
>
> string strCadenaInsert = "insert into localidades
> (idlocalidad,nombrelocalidad) values
> (@paridlocalidad,@parnombrelocalidad)";
>
> OleDbCommand ComandoSQL = new OleDbCommand(strCadenaInsert,MiConexion);
>
> /* A esos parametros los agrego al comando SQL */
>
> ComandoSQL.Parameters.Add(new
> OleDbParameter("paridlocalidad",OleDbType.Integer));
>
> ComandoSQL.Parameters.Add(new
> OleDbParameter("parnombrelocalidad",OleDbType.VarChar));
>
>
> try
>
> {
>
> ComandoSQL.ExecuteNonQuery();
>
> }
>
> catch (System.Data.OleDb.OleDbException exc4)
>
> {
>
> MessageBox.Show(exc4.Message);
>
> }
>
> finally
>
> {
>
> MiConexion.Close();
>
> }
>
>
>
>
>

Respuesta Responder a este mensaje
#3 Alberto Poblacion
14/11/2006 - 07:43 | Informe spam
"Daniel Maldonado" wrote in message
news:
"DEBE DECLARAR LA VARIABLE @paridlocalidad"



Ese error sale cuando declaras la variable pero no le asignas valor.
Tienes que ponerle algo en el .Value al parámetro antes de ejecutar la
sentencia (y además la @ forma parte del nombre del parámetro):

OleDbParameter param = new
OleDbParameter("@paridlocalidad",OleDbType.Integer);
param.Value = 1234;
ComandoSQL.Parameters.Add(param);

Aparte de eso, has mezclado parámetros con @ (de los que usa el
SqlClient) con llamadas por OleDb. Cuando se usa OleDb, normalmente los
parámetros no llevan nombre sino que se indican con una "?".
Respuesta Responder a este mensaje
#4 fanely
17/11/2006 - 03:58 | Informe spam
Hola a mi me sale el siguiente error

Debe declarar la variable '@ct'.

pero ya la declare en el formulario
dim ct as integer

para usarlo en un update.
Respuesta Responder a este mensaje
#5 Alberto Poblacion
17/11/2006 - 07:58 | Informe spam
"fanely" wrote in message
news:

Debe declarar la variable '@ct'.

pero ya la declare en el formulario
dim ct as integer

para usarlo en un update.



No, no es en el formulario. Lo de "debe declarar la variable" te lo está
diciendo el SQL, que es el que no vé la declaración (obviamente el servidor
Sql no ve tu formulario, todas las variables tienen que llegarle a través de
la conexión a base de datos). Para que el servidor reciba correctamente la
variable, es necesario que le asignes un valor a través de un objeto
Parameter. Y esto tienes que escribirlo tú en tu código, no se toma
automáticamente del formulario.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida