Tengo el código C# que recorre los archivos .sql
y ejecuta lo que hay dentro de ellos para configurar una base de datos.C#, MySQL, ADO.NET, delimitador que causa el error de sintaxis
Una .sql
archivo es básicamente como sigue:
DROP PROCEDURE IF EXISTS myProc;
DELIMITER $$
CREATE PROCEDURE myProc()
BEGIN
-- procedure stuff goes here
END $$
DELIMITER ;
CALL myProc();
Cuando éste sea incorporado ventana de instrucciones de MySQL Query Browser, que se ejecuta a la perfección ... una y otra vez, al igual que uno querría que lo haga.
Sin embargo, si pongo la cadena en mi IDbCommand
y ejecutarlo ...
connection.Open(); // An IDbConnection
IDbTransaction transaction = connection.BeginTransaction();
using (IDbCommand cmd = connection.CreateCommand())
{
cmd.Connection = connection;
cmd.Transaction = transaction;
cmd.CommandText = line;
cmd.CommandType = CommandType.Text;
try
{
cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
transaction.Rollback();
return false;
}
}
transaction.Commit();
connection.Close();
... Me da la excepción temida 1064 ...
Usted tiene un error en su sintaxis SQL; consulte el manual que corresponde a su versión del servidor MySQL para el sintaxis derecho al uso cerca de 'DELIMITER $$ CREATE PROCEDURE myProc() BEGIN ...
Entonces, la pregunta es ... ¿por qué dejar que MySQL hago esto sin problemas, pero cuando intento ejecutarlo desde C#, ¿falla? Y, por supuesto, la segunda pregunta es cómo se supone que debo solucionarlo.
Esto es bueno. Nunca lo vi en mis búsquedas. Gracias. – Brillyints