В MySQL Workbench запрос MySQLИспользование запроса MySQL с переменными из C#
SET @rownum=-1;
SELECT @rownum:[email protected]+1 AS row_num
FROM someTable
возвращает таблицу, где значение row_num начинается с 0 и идет вверх на 1 для каждой строки:
+---------+
| row_num |
+---------+
| 0 |
+---------+
| 1 |
+---------+
| 2 |
....
Я пытаюсь выполнить тот же запрос из C#.
string connectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" +
"UID=" + uid + ";" + "PASSWORD=" + password + ";" + "ALLOW USER VARIABLES = true;";
MySqlConnection connection = new MySqlConnection(connectionString);
MySqlCommand command;
MySqlDataAdapter adapter = new MySqlDataAdapter();
connection.Open();
command = connection.CreateCommand();
command.CommandText = "SELECT @rownum := @rownum + 1 AS row_num FROM someTable";
command.Parameters.Add("@rownum", MySqlDbType.Int32);
command.Parameters["@rownum"].Value = -1;
adapter.SelectCommand = command;
DataTable table = new DataTable();
adapter.Fill(table);
Последняя строка из приведенных выше результатов в следующем MySqlException
Вы имеете ошибку в вашем синтаксисе SQL; в руководстве, соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать вблизи «: = -1 + 1 AS ROW_NUM ИЗ someTable»
Почему запрос не работает с C#?
why ':' after '@ rownum'? –
Вы не объявляете @rownum, как в исходном запросе – Mihai
@Ehsan: becasue: = - оператор присваивания в MySQL. Использование '@rownum = @rownun + 1' в запросе MySQL приводит к сравнению -1 = (-1 + 1), и поэтому каждая строка имеет значение 0 для row_num –