Ejecutar sentencia SQL

27/11/2008 - 02:51 por Darhas | Informe spam
Hola a todos
¿¿¿Me podriais indicar que me falta para ejecutar mi sentencia SQL???

Y otra pregunta, Si quiero hacer un Select tambien funciona de la misma
manera, quiero decir, el mismo codigo cambiando la sentencia SQL, y donde me
devuelve la consulta????


Un saludo y gracias por todo
Darhas
-
OleDbConnection cnn;
OleDbDataAdapter cmd;
string sql;
sql = "INSERT INTO TNumeros(Antes, Numero, Despues, TipoNumero) VALUES
(tAntes.Text, tNumero.Text, tDespues.Text, tTipoNumero.Text);";
cnn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+
(@"_Ficheros\pepe.mdb") + ";");
cmd = new OleDbDataAdapter(sql, cnn);
cnn.Open();
- ¿¿¿¿Aqui que pongo para ejecutar mi sentencia SQL????
cnn.Close();

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
27/11/2008 - 08:13 | Informe spam
"Darhas" wrote in message
news:
Hola a todos
¿¿¿Me podriais indicar que me falta para ejecutar mi sentencia SQL???

Y otra pregunta, Si quiero hacer un Select tambien funciona de la misma
manera, quiero decir, el mismo codigo cambiando la sentencia SQL, y donde
me
devuelve la consulta????


Un saludo y gracias por todo
Darhas
-
OleDbConnection cnn;
OleDbDataAdapter cmd;
string sql;
sql = "INSERT INTO TNumeros(Antes, Numero, Despues, TipoNumero) VALUES
(tAntes.Text, tNumero.Text, tDespues.Text, tTipoNumero.Text);";
cnn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data
Source="+
(@"_Ficheros\pepe.mdb") + ";");
cmd = new OleDbDataAdapter(sql, cnn);
cnn.Open();
- ¿¿¿¿Aqui que pongo para ejecutar mi sentencia SQL????
cnn.Close();





Tal como lo tienes escrito está pensado para una SELECT y no para una
INSERT. EL OleDbDataAdapter lo que hace es llenar un DataSet, cuando llamas
a su método Fill. En otras palabras, en el hueco que has dejado meterías
esto:

DataSet ds = new DataSet();
cmd.Fill(ds);

Y los registros te los dejaría en un DataTable dentro de "ds". Pero, como te
digo, esto es para una SELECT.


Para ejecutar la INSERT, te interesa usar un OleDbCommand en lugar del
OleDbDataAdapter. Su método ExecuteNonQuery se utiliza para ejecutar la
sentencia sin esperar ningún resultado devuelto por ésta:

sql = "INSERT .";
cnn = new OleDbConnection("");
cmd = new OleDbCommand(sql, cnn);
cnn.Open();
cmd.ExecutNonQuery();
cnn.Close();
Respuesta Responder a este mensaje
#2 Darhas
28/11/2008 - 02:39 | Informe spam
Hola buenas

Te hecho caso y ahora me da el siguiente Error Code: ErrorCode -2147217904
cuando hace el cmd.ExecuteNonQuery();

¿Que hago mal?

Un saludo
Darhas

Este es el codigo que ahora me da el error:


string Dato;
Dato = "a";
string sql;
OleDbConnection cnn;
OleDbCommand cmd;
sql = "INSERT INTO TNumeros(Antes, Numero, Despues, TipoNumero) VALUES
(Dato, Dato, Dato, Dato)";
cnn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+
(@"C:\_Ficheros\PEPE.mdb") + ";");
cmd = new OleDbCommand(sql, cnn);
cnn.Open();
cmd.ExecuteNonQuery();
cnn.Close();
Respuesta Responder a este mensaje
#3 Alberto Poblacion
28/11/2008 - 09:01 | Informe spam
"Darhas" wrote in message
news:
Te hecho caso y ahora me da el siguiente Error Code: ErrorCode -2147217904
cuando hace el cmd.ExecuteNonQuery();

¿Que hago mal?



Este error ocurre cuando hay algo mal en la sentencia Sql, por ejemplo:
- El nombre de un campo está mal escrito
- Uno o más de los valores están vacíos
- El tipo de un dato es incorrecto (por ejemplo, un dato numérico
está entre comillas, o uno de tipo string no tiene las comillas).
Respuesta Responder a este mensaje
#4 Octavio Hernandez
28/11/2008 - 12:31 | Informe spam
Hola,

En el código que has mandado, se ve que lo que estás ejecutando no tiene
sentido para el motor SQL:

sql = "INSERT INTO TNumeros(Antes, Numero, Despues, TipoNumero) VALUES
(tAntes.Text, tNumero.Text, tDespues.Text, tTipoNumero.Text);";

Tendrías que mandar no el texto "tAntes.Text", sino el VALOR de la propiedad
tAntes.Text (que es lo que habrá tecleado el usuario en el control tAntes):

sql = "INSERT INTO TNumeros(Antes, Numero, Despues, TipoNumero) VALUES (" +
tAntes.Text + ", " +
tNumero.Text + ", " +
tDespues.Text + ", " +
tTipoNumero.Text + ")";

Estoy suponiendo que en tAntes, tNumero, etc. se introducen datos numéricos,
si fueran cadenas de caracteres tendrías que insertar las comillas que
delimitan las cadenas.

Pon un punto de interrupción después de esta asignación para que veas que
ahora la sentencia SQL sí se corresponderá con lo que quieres hacer.

Ojo que aunque este código sí te debería funcionar, esta no es la mejor
manera de ejecutar una sentencia SQL que incorpora datos suministrados por
el usuario. En particular, con este código podrás ser víctima de un ataque
conocido como "Inyección de SQL". Lo correcto es escribir sentencias
PARAMETRIZADAS, y asignar los datos que el usuario introduzca a los
parámetros de la sentencia. Por ejemplo, lee este artículo:

http://msdn.microsoft.com/es-es/lib...98271.aspx

Slds - Octavio

"Darhas" wrote in message
news:
Hola buenas

Te hecho caso y ahora me da el siguiente Error Code: ErrorCode -2147217904
cuando hace el cmd.ExecuteNonQuery();

¿Que hago mal?

Un saludo
Darhas

Este es el codigo que ahora me da el error:


string Dato;
Dato = "a";
string sql;
OleDbConnection cnn;
OleDbCommand cmd;
sql = "INSERT INTO TNumeros(Antes, Numero, Despues, TipoNumero) VALUES
(Dato, Dato, Dato, Dato)";
cnn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data
Source="+
(@"C:\_Ficheros\PEPE.mdb") + ";");
cmd = new OleDbCommand(sql, cnn);
cnn.Open();
cmd.ExecuteNonQuery();
cnn.Close();
Respuesta Responder a este mensaje
#5 Darhas
29/11/2008 - 01:10 | Informe spam
Hola a todos

Ante todo gracias por las respuestas.

Ya se hacer un Insert y un Borrado.

Ahora solo me falta "chupar" los datos cuando hago el Select.

Por lo que me comento Alberto, en su primera respuesta, habia que hacer un
Fill, vale, lo hago, ¿¿¿pero como recogo los datos del DATASET que creo???

Un saludo y gracias por todo
Darhas


Aqui dejo el codigo del Select
//Esto es para un Select
OleDbConnection cnn;
OleDbDataAdapter cmd;
string sql;
sql = "SELECT Numero, TipoNumero, Despues, Antes FROM TNumeros ORDER BY
Numero, TipoNumero";
cnn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+
(@"Pepe.mdb") + ";");
cmd = new OleDbDataAdapter(sql, cnn);
cnn.Open();
DataSet ds = new DataSet();
cmd.Fill(ds);
cnn.Close();
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida