无法使用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函数运行此查询。"
尝试传递数据的方式不起作用。实际上,当您使用String.Format
时,您会将其转换为字符串,然后尝试将此字符串插入到varbinary
字段中,这会导致错误。
您必须为插入查询声明正确的参数,并将参数类型设置为varbinary
。
例如:
var parameter = new SqlParameter("@your_data", SqlDbType.VarBinary, -1);
command.Parameters.Add(parameter);
parameter.Value = Data;