MySQLのクエリMySQLのワークベンチでC#
SET @rownum=-1;
SELECT @rownum:[email protected]+1 AS row_num
FROM someTable
から変数をMySQLのクエリを使用すること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 ROW_NUM AS someTableから」
なぜクエリは、C#からは動作しませんか?
なぜ ':' '@ rownum'の後に? –
元のクエリのように@rownumを宣言しないでください。 – Mihai
@Ehsan:becasue:=はMySQLの代入演算子です。 MySQLクエリで '@rownum = @rownun + 1'を使用すると、比較-1 =(-1 + 1)となり、各行はrow_numの値が0になります –