C# 如何上传到数据库SQL Server?可能的编码错误在哪里?

C# 如何上传到数据库SQL Server?可能的编码错误在哪里?,c#,sql,sql-server,C#,Sql,Sql Server,我的问题是:如何上传到SQL Server数据库?对每个不同的对象执行两次ExecuteOnQuery是否有问题 错误消息: 用户代码未处理SqlException 参数化查询'@Cid int,@Ccontent nvarchat6,@Cupload NVARCH4000,@Tid int需要参数'@Cupload',该参数不是 供应 我的代码有什么问题,不能向数据库添加数据?T.T这是一个旧线程,我确信您找到了修复方法,但看起来您可能有注入问题。尝试使用SqlDataAdapter为sqlc

我的问题是:如何上传到SQL Server数据库?对每个不同的对象执行两次ExecuteOnQuery是否有问题

错误消息:

用户代码未处理SqlException 参数化查询'@Cid int,@Ccontent nvarchat6,@Cupload NVARCH4000,@Tid int需要参数'@Cupload',该参数不是 供应


我的代码有什么问题,不能向数据库添加数据?T.T

这是一个旧线程,我确信您找到了修复方法,但看起来您可能有注入问题。尝试使用SqlDataAdapter为sqlcommand提供每个参数的数据类型

不确定您的数据类型是什么,但它应该是这样的。还可以使用using语句,这样就不必关闭/处理连接

    string fname=""; <----- Global variable
    HtmlInputFile file = (HtmlInputFile)place.FindControl("f_upload");

    if (filename.Value.Equals(""))
    {
        span1.InnerHtml = "<b>Error Message : A File Name must be enter </b>";
        return;
    }


    if (file.PostedFile.ContentLength > 0)
    {
        try
        {

            file.PostedFile.SaveAs("c:\\WADUploadFile\\" + filename.Value);

            fname = "c:\\WADUploadFile\\" + filename.Value;
            //checking fname value
            Response.Write(fname);

            span1.InnerHtml = "File is uploaded successfully to" + "<b>C:\\WADUploadFile\\" +
                filename.Value + "</b>at the server";
        }
        catch (Exception exc)
        {
            span1.InnerHtml = "Error occured while saving file to" +
                "<b>c:\\WADUploadFile\\" + filename.Value + "</b><br/>" + "[ " +
                exc.ToString() + " ]";
        }
    }


    string sql1 = "INSERT INTO Thread (Th_id, Th_poster, Th_date) VALUES (@id, @poster, @date)";

    string sql2 = "INSERT INTO ThreadCommend(C_id,C_content,C_upload,T_id,Th_id)Values(@Cid,@Ccontent,@Cupload,@Tid,@Thid)";


    con.Open();

    SqlCommand cmd1 = new SqlCommand(sql1, con);
    cmd1.Parameters.AddWithValue("@id", threadId);
    cmd1.Parameters.AddWithValue("@poster", tempPoster);
    cmd1.Parameters.AddWithValue("@date", DateTime.Now);

    SqlCommand cmd2 = new SqlCommand(sql2, con);
    cmd2.Parameters.AddWithValue("@Cid", commendId);
    cmd2.Parameters.AddWithValue("@Ccontent", txt);
    cmd2.Parameters.AddWithValue("@Cupload", fname.ToString());
    cmd2.Parameters.AddWithValue("@Tid", topicId);
    cmd2.Parameters.AddWithValue("@Thid", threadId);




    //SqlDataAdapter daInsert = new SqlDataAdapter();
    //daInsert.InsertCommand = cmdInsertDesc.ToString();
    int x = cmd1.ExecuteNonQuery();
    con.Close();

    con.Open();
    int y = cmd2.ExecuteNonQuery();   <--- Error appear here 



    string note = "Topic added sucussfully";
    if (x > 0)
    {
        Response.Write(note.ToString());

        //Response.Write(x.ToString());
    }

    if (y > 0)
    {
        Response.Write(note.ToString());

        //Response.Write(x.ToString());
    }

    con.Close();

添加参数值后,cmd2的外观如何?C_upload列的类型是什么?fname.ToString的值是什么?string fname=;请参考下一个推荐代码,该代码用于什么?o、 OSucusfully->successfully@Soner Gonul>从cmd2的代码中可以看到,这是命令。但是,整个cmd2未能更新数据库,这意味着完全没有更新。对于cmd1,字符串命令已成功更新到表中,没有问题。C_upload nchar300设置在数据库中,目的是保存上传目录字符串。fname是字符串格式,我希望它能保存c:\\WADUploadFile\\+filename。值此值,其中filename是用户在文本框中命名的文件的短名称
          using (con)
        {
            con.Open();
            SqlDataAdapter cmd1 = new SqlDataAdapter();
            cmd1 = new SqlCommand(sql1, con);
            cmd1.InsertCommand.Parameters.Add("@id", SqlDbType.Int).Value = threadId;
            cmd1.InsertCommand.Parameters.Add("@poster", SqlDbType.NVarChar).Value = tempPoster;

            cmd1.InsertCommand.ExecuteNonQuery();

            SqlDataAdapter cmd2 = new SqlDataAdapter();
            cmd2 = new SqlCommand(sql2, con);
            cmd2.InsertCommand.Parameters.Add("@Cid", SqlDbType.Int).Value = commendId;
            cmd2.InsertCommand.Parameters.Add("@Ccontent", SqlDbType.Nvarchar).Value = txt;
            cmd2.InsertCommand.Parameters.Add("@Cupload", SqlDbType.Nvarchar).Value = fname.ToString();
            cmd2.InsertCommand.Parameters.Add("@Tid", SqlDbType.Int).Value = topicId;
            cmd2.InsertCommand.Parameters.Add("@Thid", SqlDbType.Int).Value = threadId;

            cmd2.InsertCommand.ExecuteNonQuery();
        }