Mam kod C#, który przechodzi przez pliki .sql
i wykonuje to, co jest w środku, aby skonfigurować bazę danych.C#, MySQL, ADO.NET, ogranicznik powodujący błąd składni
Jeden .sql
plik jest w zasadzie w sposób następujący:
DROP PROCEDURE IF EXISTS myProc;
DELIMITER $$
CREATE PROCEDURE myProc()
BEGIN
-- procedure stuff goes here
END $$
DELIMITER ;
CALL myProc();
Kiedy wejście to w oknie skryptu MySQL Query Browser jest, że działa doskonale ... w kółko, tak jak jeden chciałby go.
Jednakże, jeśli mogę umieścić napis w moim IDbCommand
i wykonać ją ...
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();
... mam bał wyjątku 1064 ...
masz błąd w twoja składnia SQL; sprawdzić podręcznika, który odpowiada twojej wersji serwera MySQL dla prawego składnię używaną pobliżu „DELIMITER $$ CREATE PROCEDURE moja_procedura() BEGIN ...
Więc pytanie brzmi ... dlaczego niech MySQL rób to bez żadnych problemów, ale kiedy próbuję uruchomić go z C#, to się nie powiedzie? I oczywiście drugie pytanie brzmi: jak mam to naprawić.
To jest dobre. Nigdy nie widziałem tego w moich poszukiwaniach. Dzięki. – Brillyints