Проблемная хранимая процедура MySQL, когда она вызывается только программно с помощью MySQL C# Connector API

Я использую MySql 5.6 Server, клиент, C# Connector и Workbench на рабочем столе Lenovo ThinkStation с Ubuntu 16.04. У меня возникла проблема со следующей хранимой процедурой, показанной ниже, когда она программно вызывается с помощью API MySQL C# Connector:

CREATE PROCEDURE spAddInto_TableOne_and_TableTwo(
     IN now datetime not null,
     IN quantity int not null,
     IN desc nvarchar(32) not null)
   BEGIN

     call spAddInto_TableOne(now,quantity,desc);
     call spAddInto_TableTwo(now,quantity,desc);

   END;

где MySql TableOne выглядит так:

CREATE TABLE TableOne(
EventDateTime datetime NOT NULL, 
Quantity smallint NULL,
Description nvarchar(32) NULL,
ID int AUTO_INCREMENT NOT NULL,
PRIMARY KEY (ID)
)

а таблица 2 выглядит так:

CREATE TABLE TableOne(
EventDateTime datetime NOT NULL, 
Quantity smallint NULL,
Description nvarchar(32) NULL,
ID int AUTO_INCREMENT NOT NULL,
PRIMARY KEY (ID)
)

а также

Хранимые процедуры MySql spAddInto_TableOne и spAddInto_TableTwo очень похожи на операторы атомарной вставки, использующие неявные транзакции, как показано здесь:

    INSERT INTO TableOne
           (    EventDateTime
           ,    Type
           ,    Description)
     VALUES
           (    _eventDateTime
           ,    _type
           ,    ltrim(rtrim(_description))) 

а также

  INSERT INTO TableTwo
           (    EventDateTime
           ,    Type
           ,    Description)
     VALUES
           (    _eventDateTime
           ,    _type
           ,    ltrim(rtrim(_description))) 

На этом фоне я излагаю свою проблему, которую, как я надеялся, может решить умный программист:

Когда хранимая процедура spAddInto_TableOne_and_TableTwo программно вызывается с помощью API MySQL C# Connector, в нее вставляется только TableTwo, а TableOne остается пустой.

Интересно отметить, что когда я запускал spAddInto_TableOne_and_TableTwo в MySql Workbench, я заметил, что он нормально работает, вставляя строку в TableOne и TableTwo.

Это мой код структуры С# MySql Connector:

SqlConnection conn = new SqlConnection(MyConnectionString);

conn.Open();
SqlCommand cmd = new SqlCommand(sProc, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("eventDateTime", eventDate);
cmd.Parameters.AddWithValue("eventtype", type);
cmd.Parameters.AddWithValue("description", desc.Trim())

cmd.ExecuteNonQuery();

Должен ли я использовать C# MySqlConnection.BeginTransaction() и MySqlConnection.Commit() в коде C# непосредственно выше?

Любая помощь приветствуется.


person Frank    schedule 16.07.2016    source источник
comment
Я не работаю с MySql, но я работаю с ADO.Net, и я думаю, что вы должны добавлять к своим параметрам префикс @ или ? даже с MySql.   -  person Crowcoder    schedule 16.07.2016
comment
Вы используете неправильные классы, не так ли? Посмотрите, что я ответил здесь   -  person Drew    schedule 16.07.2016
comment
@Drew, спасибо за ваш комментарий. Я использую правильные классы MySQL Connector, потому что я назвал MySQLConnection и MySQLCommand как SQLConnection и SQLCommand соответственно.   -  person Frank    schedule 16.07.2016
comment
соберите zip .cs и .sql для создания таблиц, и я проверю его   -  person Drew    schedule 16.07.2016
comment
@Crowcoder, спасибо за ваш комментарий. Вы должны указать свои параметры с помощью префикса @ с помощью Microsoft SQLServer. Я не предварял MySQLParameter ? или @.   -  person Frank    schedule 16.07.2016
comment
@ Дрю, могу я спросить, как отправить zip-файл .cs и sql для хранимых процедур и таблиц? Спасибо.   -  person Frank    schedule 18.07.2016
comment
@Crowcoder, вы совершенно правы в отношении префикса параметров @ и MySQL в Ubuntu 16.04 с C#. Спасибо.   -  person Frank    schedule 18.07.2016
comment
Пожалуйста, не вводите в заблуждение статью «Как я могу увидеть командную строку при использовании параметров MySqlCommand?» с URL-адресом, указанным ниже, в Ubuntu Linux 16.04, stackoverflow.com/questions/20205550/   -  person Frank    schedule 18.07.2016
comment
Основываясь на той среде, которая у меня есть (см. 2-й комментарий), я рад протестировать что-либо в пределах разумного. Другими словами, если он подходит для моей среды .NET без какой-либо установки. Мой адрес электронной почты: [email protected]   -  person Drew    schedule 18.07.2016
comment
@Drew, я собираюсь отправить тебе электронное письмо. Я поступил в колледж в Бостоне и жил там до года назад в Арлингтон-Хайтс, штат Массачуэтс. Спасибо.   -  person Frank    schedule 18.07.2016