C# 错误:不允许从数据类型varchar隐式转换为varbinary(max)。使用CONVERT函数运行此查询

C# 错误:不允许从数据类型varchar隐式转换为varbinary(max)。使用CONVERT函数运行此查询,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,这是我上传图像的程序: protected void Button1_Click(object sender, EventArgs e) { string car_model = TextBox1.Text; string car_brand = TextBox2.Text; string car_type = TextBox3.Text; int dist_travel = int.Parse(TextBox4.Text); int mileage =

这是我上传图像的程序:

 protected void Button1_Click(object sender, EventArgs e)
{
    string car_model = TextBox1.Text;
    string car_brand = TextBox2.Text;
    string car_type = TextBox3.Text;
    int dist_travel = int.Parse(TextBox4.Text);
    int mileage = int.Parse(TextBox5.Text);
    string car_condition = TextBox6.Text;
    string car_owner = TextBox7.Text;
    string car_color = TextBox8.Text;
    int car_price = int.Parse(TextBox9.Text);

    if (FileUpload1.HasFile)
    {
        byte[] fdata = FileUpload1.FileBytes;

        string con_string = @"data source=(local);initial catalog=Automobile;integrated security=true";
        SqlConnection con = new SqlConnection();
        con.ConnectionString = con_string;
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = "Insert into vehicle_details values ('" + car_model + "','" + car_type + "','" + dist_travel + "','" + mileage + "','" + car_condition + "','" + car_owner + "','" + car_color + "','" + fdata + "','" + car_price + "')";
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }
}
然后抛出以下错误:

不允许从数据类型
varchar
隐式转换为
varbinary(max)
。使用
CONVERT
函数运行此查询


数据库的结构是car_model varchar、car_type varchar、dist_travel int、miliety int、car_condition varchar、car_owner varchar、car_color varchar、fdata varbinary(MAX)、car_price varchar

您可能已经将fdata声明为byte[],但代码中

... + "','" + fdata + "','" + ....
正在将其强制转换为字符串,以便它可以成为命令文本的一部分


您必须参数化查询

您需要(a)向我们展示您的表结构(列名和数据类型),以及(b)您应该使用参数化查询来避免SQL注入!您的数据库结构是什么?哪些列是varbinary类型?按名称指定列不是更好吗?(这将使代码对于可能的模式更改更加健壮)。错误消息中什么不明显?您可能已将fdata声明为字节[],但