上传文件没问题就是把当前文件的名字,类型,大小插入数据库总失败!是什么原因!
protected void btnup_Click(object sender, EventArgs e)
    {
        string FullFileName = this.FileUpload1.PostedFile.FileName;
        string FileName = FullFileName.Substring(FullFileName.LastIndexOf("\\") + 1);
        this.FileUpload1.PostedFile.SaveAs(Server.MapPath("Files") + "\\" + FileName);
        string type = FileUpload1.PostedFile.ContentType;
        int size = FileUpload1.PostedFile.ContentLength;
        SqlConnection con = DB.CreatCon();
        con.Open();
        SqlCommand cmd = new SqlCommand("insert into file_up(file_name,file_size,file_type) values('@file_name','@file_size','@file_type')",con);
        cmd.Parameters.Add("@file_name", SqlDbType.VarChar, 50).Value = FileName;
        cmd.Parameters.Add("@file_size", SqlDbType.Int ).Value = size;
        cmd.Parameters.Add("@file_type", SqlDbType.VarChar, 50).Value = type;
        try
        {
            cmd.ExecuteNonQuery();
            Response.Write("<script>alert('上传成功')</script>");
        }
        catch
        {
            Response.Write("<script>alert('上传失败')</script>");
        }
        con.Close();
    }

解决方案 »

  1.   

    在将 varchar 值 '@file_size' 转换成数据类型 int 时失败。 
    错误的行数显示的是 cmd.ExecuteNonQuery(); 这行
      

  2.   

    cmd.Parameters.Add("@file_size", SqlDbType.Int ).Value = size; 
    这个错了
    应该写成 cmd.Parameters.Add("@file_size", SqlDbType.Int ).Value =convent.toInt32(size)
      

  3.   

    你应该要转换一下,string类型当然不能转成int类型啦
      

  4.   

    看看是不是存储过程参数数据类型和你要赋值的参数类型不符合。如将varchar类型的赋值给int所哟报错。还有看看你对应字段的数据类型
      

  5.   

     int size = FileUpload1.PostedFile.ContentLength; 
    这句得到的值是什么
      

  6.   

    明显是你的sql有问题
    insert into file_up(file_name,file_size,file_type) values('@file_name','@file_size','@file_type')
    应该是 
    insert into file_up(file_name,file_size,file_type) values(@file_name,@file_size,@file_type)
    @file_name已经是string,再加''肯定报错了
      

  7.   

    要将你的数据类型转换
    int.parm(***)