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,依此类推,优先级为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 回答