Foros del Web » Programación para mayores de 30 ;) » .NET »

Ejecutar un archivo ".sql" desde C# .NET

Estas en el tema de Ejecutar un archivo ".sql" desde C# .NET en el foro de .NET en Foros del Web. Hola, tengo un archivo cuya ruta es C:\Select.sql dentro del archivo tengo una sentencia SELECT en SQL ¿como puedo ejecutarlo desde el código? he intentado ...
  #1 (permalink)  
Antiguo 19/11/2003, 02:40
 
Fecha de Ingreso: agosto-2003
Ubicación: Madrid
Mensajes: 82
Antigüedad: 20 años, 9 meses
Puntos: 0
Ejecutar un archivo ".sql" desde C# .NET

Hola,
tengo un archivo cuya ruta es C:\Select.sql
dentro del archivo tengo una sentencia SELECT en SQL
¿como puedo ejecutarlo desde el código?

he intentado sin exito:

OleDbConnection objOleDbConnection = new OleDbConnection("Provider=MSDAORA.1;Data Source=ORACLE;User Id=pepe;Password=pepe;");

OleDbCommand objOleDbCommand = new OleDbCommand("@C:\\Select.sql",objOleDbConnection) ;

try
{
objOleDbConnection.Open();
objOleDbCommand.ExecuteNonQuery(); objOleDbConnection.Close();
}
catch (OleDbException objOleDbException)
{
Console.WriteLine(objOleDbException.Message);
}

Salta la excepción diciendome que la sentencia SQL no es correcta

Gracias
  #2 (permalink)  
Antiguo 19/11/2003, 10:40
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Hola de nuevo ofl666... porque no intentas leer el archivo (select.sql) con la clase streamreader y se lo pasas a un string y de ahi a tu commnad..

Ejemplo

VB.Net
Cita:
Dim str As String
Dim sr As StreamReader

sr = File.OpenText("c:\select.sql")
str = sr.ReadToEnd
sr.Close()

Dim oConn As New OleDbConnection("Provider=MSDAORA.1;Data Source=ORACLE;User Id=pepe;Password=pepe;")
Dim cmd As New OleDbCommand(str , oConn)
...
...
C#
Cita:
System.IO.StreamReader sr;
String str;
sr = System.IO.File.OpenText("c:\\select.sql");
str = sr.ReadToEnd();
sr.Close();

OleDbConnection objOleDbConnection = new OleDbConnection("Provider=MSDAORA.1;Data Source=ORACLE;User Id=pepe;Password=pepe;");

OleDbCommand objOleDbCommand = new OleDbCommand(str ,objOleDbConnection);
...
....

O la otra cosa que tambien puede hacer es tener una tabla que guarde tus querys y con un dataset o datareader lles el registro y ejectuas tu query que está guardada en tu bd.

Pero bueno... ya depende de cada quien.

Saludos friend...
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 18/12/2007, 15:45
 
Fecha de Ingreso: diciembre-2007
Mensajes: 1
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Ejecutar un archivo ".sql" desde C# .NET

Que onda BROTHERS, miren un script si se puede ejecutar desde código pero primero hay que hacer unas magias con ellos. Miren por un ejemplo un store procedure llamado Cliente.sql que contiene:


Cita:
Iniciado por LEONIDASOSEAYO

USE [SPprueba]
GO
/****** Object: StoredProcedure [dbo].[spXCCliente] Script Date: 12/18/2007 15:15:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[spXCCliente]


@Header int=0,
@id int = 0,
@ID2 int = 0,
@Cliente nchar(10) = NULL
AS
BEGIN

IF @Header= 1
BEGIN
INSERT INTO Cliente (id, ID2, Cliente)
VALUES (@id, @ID2, @Cliente)
END

END
En codigo tendrian que hacer un respaldo (si asi lo quieren) y cambiarle la extension... tambien al gusto del programador, y despues de llamarlo Cliente.txt, abren el archivo y se lo pasan a una variable y le quitan por código esta parte:



USE [SPprueba]
GO
/****** Object: StoredProcedure [dbo].[spXCCliente] Script Date: 12/18/2007 15:15:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO



Esto por que cuando lo ejecuten en los métodos que les pongo abajo, pues notaran que se pone por default,



------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
public void AccionCompilarSP(string Template)
{
OleDbConnection conection = null;
OleDbDataReader dataReader = null;

Server = Program.GServer; // Se obtiene de una clase que es el punto de acceso principal de la aplicaCION
DataBase = Program.GDataBase; // lo mismo
User = Program.GUser; //lo mismo
Password = Program.GPassword; // lo mismo
string OLEDBConec= "Provider=SQLOLEDB.1;Password="+Password+";Per sist Security Info=True;User ID="+User+";Initial Catalog="+DataBase+";Data Source="+Server;

try
{
conection = new OleDbConnection(OLEDBConec);
conection.Open();
ExecuteSQL(Template, conection, ref dataReader);
}
catch (Exception e)
{
MessageBox.Show(e.Message, "ScriptEjecutor", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
finally
{
if (conection != null)
{
conection.Close();
}

if (dataReader != null)
{
dataReader.Close();
}
}

}

public static void ExecuteSQL(string query, OleDbConnection conection, ref OleDbDataReader dataReader)
{
OleDbCommand comando;
try
{
comando = conection.CreateCommand();
comando.CommandType = CommandType.Text;
comando.CommandText = query;

if (dataReader != null)
{
dataReader.Close();
}

dataReader = comando.ExecuteReader();

}
catch (Exception e)
{
throw e;
}
}


-----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------

Claro que se pueden hacer mil y un magias, pero este solo es un ejemplo de como se ejecuta un Script desde código
Vientos, ahi se ven


Saludos
  #4 (permalink)  
Antiguo 03/09/2010, 01:57
 
Fecha de Ingreso: septiembre-2010
Mensajes: 2
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Ejecutar un archivo ".sql" desde C# .NET

tengo una solucion es un poco chapucilla pero funciona.

en el codigo vb.net poner

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'en este caso es a pero se puede llamar como sea
Shell("c:\a.bat", AppWinStyle.MaximizedFocus, True)
End Sub

dentro del a.bat ponemos la instruccion para ejecutar el scrip loquesea.sql, con la siguiente linea

rem:poner la ruta compelta donde esta el exe mysql y la ruta donde este el fichero sql
d:\xampp\mysql\bin\mysql -u root < d:\xampp\mysql\bin\loquesea.sql


Y dentro de el fichero loquesea.sql ponemos el conjunto de instrucciones a ejecutar ( en este caso crear una base de datos)

/****** SI EXISTE LA BASE DE DATOS LA BORRA ******/
DROP DATABASE IF EXISTS biblioteca;
CREATE DATABASE biblioteca;
USE biblioteca;
/****** SI EXISTE LA TABLA LA BORRA ******/
DROP TABLE IF EXISTS libro;
CREATE TABLE libro (
titulo VARCHAR(60),
escritor VARCHAR (80)
);


Asi seguro que funciona, es como lo hago yo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:21.