1

C# で razor を使用しており、SQL で変数を宣言する必要がありますが、機能しません。

insert_data = db.Query("DECLARE @myid INT");

次のエラーが表示されます

クエリの解析中にエラーが発生しました。[ トークン行番号 = 1、トークン行オフセット = 1、エラーのトークン = DECLARE ]

編集:

データをあるテーブルに入れ、その一意の ID を取得して別のテーブルに挿入しようとしています。

insert_data = db.Query("INSERT INTO sorted (sorted_words) SELECT '" + sorted_word + "' WHERE NOT EXISTS (SELECT sorted_words FROM sorted WHERE sorted_words = '" + sorted_word + "')");
insert_data = db.Query("DECLARE @myid BIGINT");
insert_data = db.Query("SET @myid = scope_identity()");
insert_data = db.Query("INSERT INTO words (words, sorted_id) SELECT '" + word + "', @myid WHERE NOT EXISTS (SELECT words FROM words WHERE words = '" + word + "')");
4

3 に答える 3

1

クエリを使用する代わりに ExecuteStoreCommand を試してください

参照: Entity Framework : MySQL カスタム環境変数の設定

于 2013-10-23T20:41:01.517 に答える
0

内部にすべてのステートメントを含むストアド プロシージャを記述し、コードからこのストアド プロシージャを実行することをお勧めします。これにより、管理がはるかに簡単になります。

于 2013-10-23T20:57:56.050 に答える
0

SQL Compact パラメーターは、SQL Server と同じ方法では宣言されません。データベース ヘルパーを使用する場合は、パラメーター@0@1@2などの名前を付け、毎回 1 ずつ増やしてください。また、Database.Queryメソッドは複数行のデータを選択するためのものです。Execute挿入とGetLastInsertId最新の行の ID 値の取得に使用する必要があります。

db.Execute("INSERT INTO sorted (sorted_words) SELECT @0 WHERE NOT EXISTS (SELECT sorted_words FROM sorted WHERE sorted_words = @0)", sorted_word);
var id = (int)db.GetLastInsertId();
db.Execute("INSERT INTO words (words, sorted_id) SELECT @0, @1 WHERE NOT EXISTS (SELECT words FROM words WHERE words = @0)", word, id);

Razor Web ページでのデータの操作について詳しくは、http ://www.asp.net/web-pages/tutorials/data をご覧ください。

于 2013-10-23T21:26:47.793 に答える