无法使用c#

时间:2015-12-30 19:01:47

标签: c# sql database

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

            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函数运行此查询。"

1 个答案:

答案 0 :(得分:1)

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

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

例如:

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