MVC - 对于循环 - 添加加法变量

本文关键字:添加 变量 于循环 MVC 循环 | 更新日期: 2023-09-27 18:36:36

im 在 MVC4 Visual Studio 中处理一个项目,并添加了一个 Uploadhandler.ashx.cs 来上传文件。

该代码正在努力上传文件并将信息插入到我的数据库中。

现在我尝试/需要的:

我添加了一列,我想在其中插入每行的数字,例如 1、2、3、4 等......

在我的代码中,我有一个 for 循环来为每个文件做我想做的事情。

如何生成一个自动添加 +1 的变量以将其插入我的数据库。

我尝试了很多事情,例如:

var a=1;
for(.......)
{
/*******My code****************/
a=a+1;
}

希望有人能帮上这个忙:

这是我的代码:

 private void UploadWholeFile(HttpContext context, List<FilesStatus> statuses)
        {
            using (SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
            {
                var a= 1;
                for (int i = 0; i < context.Request.Files.Count; i++)
                {
                    var file = context.Request.Files[i];
                    var fullpath = "/Files/"  + Path.GetFileName(file.FileName);
                    var myfilename=Path.GetFileName(file.FileName);
                    file.SaveAs(fullpath);
                    statuses.Add(new FilesStatus(fullName, file.ContentLength, fullpath 
                    string sql1 = "insert into Image(FileName, Number) values (@FileName, @Number)";
                    using (SqlCommand cmd = new SqlCommand(sql1, cn))
                    {  
                        cmd.Parameters.AddWithValue("@FileName", myfilename);
                        cmd.Parameters.AddWithValue("@Number", a);
                        cn.Open();
                        cmd.ExecuteNonQuery();
                        cn.Close();
                    }
                    a = a + 1;
                }
            }
        }

MVC - 对于循环 - 添加加法变量

你为什么不只使用你的迭代变量,i

您粘贴的代码有一些错误,这里是固定代码。(更正标有 )。

private void UploadWholeFile(HttpContext context, List<FilesStatus> statuses)
{
    using (SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
    {
        var a= 1;
        **cn.Open();**
        for (int i = 0; i < context.Request.Files.Count; i++)
        {
            var file = context.Request.Files[i];
            var fullpath = "/Files/"  + Path.GetFileName(file.FileName)
            file.SaveAs(fullpath);
            **statuses.Add(new FilesStatus(fullName, file.ContentLength, fullpath));** 
            **string sql1 = "insert into Imagem(FileName, Number, Id_Magazine, Tem_Conteudo) values (@FileName, @Number, @Id_Magazine, @Tem_Conteudo)";**
            using (SqlCommand cmd = new SqlCommand(sql1, cn))
            {
                cmd.Parameters.AddWithValue("@NomeFicheiro", myfilename);
                cmd.Parameters.AddWithValue("@Id_Magazine", context.Request.Form["MagazineId"]);
                cmd.Parameters.AddWithValue("@Tem_Conteudo", false);
                cmd.Parameters.AddWithValue("@Number", a++);
                **cmd.ExecuteNonQuery();**
            }           
        }
        **cn.Close();**
    }
}

希望对您有所帮助!

问候

乌罗什

尝试将变量声明为 int ,您可以使用 a++ 将 a 递增 1:

int a=1;
for(.......)
{
    /*******My code****************/
    a++;
}

此外,您已经在 for 循环中声明了一个整数i,每次运行循环时递增 1,因此您可以使用它而不是声明 a:

for (int i = 0; i < context.Request.Files.Count; i++)
{
     ...
     cmd.Parameters.AddWithValue("@Number", i);
     ...
}

最后,我不确定为什么您的数据库中需要此列。如果将其用作唯一标识符,请将其设为主键。然后,您可以将其设置为自动递增,而无需每次都添加该值。