你好编码器我只是想知道是否可以在数据库中的任何其他图像之前将图像插入数据库。
假设我有用于上传图像的文件加载器和用于显示这些图像优先级的下拉列表。 现在我在我的数据库中有10个图像,我绑定,优先级与下拉列表。现在当我上传新图像时,我可以看到图像的优先级到下拉列表中。现在那部分已经完成了
现在我想要的是当我上传新图像并从数据库中图像存储之前的图像存储的下拉列表中选择优先级时,数据库中图像的优先级。 例: 我选择文件加载器按钮来上传文件,并从下拉列表中选择优先级编号5。 现在该图像将以优先级5存储,而优先级为5的图像现在具有优先级编号6,依此类推..
我该怎么做?
答案 0 :(得分:4)
我相信你要找的是一个使用SQL的简单更新查询
Update table set Priority = Priority + 1 where Priority >= @InputtedPriority
然后您需要从数据库中删除超过10的任何内容
DELETE FROM table where Priority > 10
修改强>
由于阅读了更多注释,看起来您需要运行第一行SQL来更新表以移动优先级。 SQL服务器上的简单SqlCommand和存储过程将会解决您的问题。快速查看SO以执行SqlCommands和过程应该不会太难找到你想要的东西。
<强> EDIT2 强>
一个简单的代码示例,如果您从下拉列表中选择优先级编号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();
}