2

こんにちはコーダー、データベース内の他の画像の前に画像をデータベースに挿入できることを知りたいだけです。

画像をアップロードするファイルアップローダーと、それらの画像の優先度を表示するドロップダウンリストがあるとします。現在、データベースに 10 個の画像があり、優先順位をドロップダウン リストにバインドしています。新しい画像をアップロードすると、画像の優先度がドロップダウン リストに表示されます。これでその部分は完了です

今私が欲しいのは、新しい画像をアップロードし、データベース内の画像の優先度の前にその画像がデータベースに保存されるドロップダウンリストから優先度を選択するときです。例: ファイルのアップロード ローダー ボタンを選択してファイルをアップロードし、ドロップダウン リストから優先度 5 を選択します。画像は優先度 5 で保存され、優先度 5 の画像は優先度 6 などになります。

ここに画像の説明を入力

ここに画像の説明を入力

どうやってやるの?

4

1 に答える 1

4

あなたが探しているのは、SQL を使用した単純な更新クエリだと思います

Update table set Priority = Priority + 1 where Priority >= @InputtedPriority

次に、データベースから10を超えるものを削除する必要があります

DELETE FROM table where Priority > 10

編集

より多くのコメントを読んでいるので、SQL の最初の行を実行してテーブルを更新し、優先度を移動する必要があるようです。シンプルな SqlCommand と SQL サーバー上のストアド プロシージャで問題が解決します。SqlCommands とプロシージャを実行するための SO をざっと見て、探しているものを見つけるのはそれほど難しくありません。

編集2

簡単なコード例では、ドロップダウン リストから優先度 30 を選択して設定するとpriority、アップロードする画像は 30 になり、30 にある画像は 31 に移動し、優先度の高い画像は 30 に移動します。 50 は 51 になります。このコードは、ID がIDENTIY列であることを前提としています。

string imageName; 
string description; 
string path; 
int priority;

//(snip) populate the variables

const string query = "Update imagesTable set Priority = Priority + 1 where Priority >= @Priority;" +
               "insert into imagesTable (ImageName, Description, Path, Priority) values (@ImageName, @Description, @Path, @Priority)";

using (var connection = new SqlConnection(connectionString))
using (var command = new SqlCommand(query, connection))
{
    connection.Open();

    command.Parameters.AddWithValue("@ImageName", imageName);
    command.Parameters.AddWithValue("@Description", description);
    command.Parameters.AddWithValue("@Path", path);
    command.Parameters.AddWithValue("@Priority", priority);

    command.ExecuteNonQuery();
}
于 2013-06-19T13:59:33.450 に答える