1

我在 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;
                }
            }
        }
4

3 回答 3

0

Why don't you just use your iteration variable, i?

于 2013-10-23T10:36:15.590 回答
0

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

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();**
    }
}

希望能帮助到你!

问候,

乌罗什

于 2013-10-23T10:38:46.713 回答
0

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

int a=1;

for(.......)
{

    /*******My code****************/

    a++;
}

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

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

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

于 2013-10-23T10:33:08.150 回答