无法使用c#将文件保存在sql数据库中

本文关键字:存在 保存 sql 数据库 文件 | 更新日期: 2023-09-27 18:28:28

这是我的示例代码。我想做的是简单地将文件转换为二进制格式,这样我就可以将其插入数据表中

            string fileName = FileUpload1.PostedFile.FileName;
            Stream strm = FileUpload1.PostedFile.InputStream;
            BinaryReader br = new BinaryReader(strm);
            Byte[] Data = br.ReadBytes((int)strm.Length);
            string fileType = FileUpload1.PostedFile.ContentType;
            SqlConnection conn = new SqlConnection(connString);
            conn.Open();
            string sql = string.Format("Insert into FileUpload (Data,fileName,fileType) values('{0}','{1}','{2}')", Data, fileName, fileType);
            Response.Write(sql);
            SqlCommand command = new SqlCommand(sql, conn);
            command.ExecuteNonQuery();
            conn.Close();
            label1.ForeColor = System.Drawing.Color.Green;
            label1.Text = "uploaded!!!!";

问题是,每次我执行它时,它都会说"不允许从数据类型varchar隐式转换为varbinary(max)。使用CONVERT函数运行此查询。"

无法使用c#将文件保存在sql数据库中

尝试传递数据的方式不起作用。实际上,当您使用String.Format时,您会将其转换为字符串,然后尝试将此字符串插入到varbinary字段中,这会导致错误。

您必须为插入查询声明正确的参数,并将参数类型设置为varbinary

例如:

var parameter = new SqlParameter("@your_data", SqlDbType.VarBinary, -1);
command.Parameters.Add(parameter);
parameter.Value = Data;