【问题标题】:Error : Implicit conversion from data type varchar to varbinary(max) is not allowed. Use the CONVERT function to run this query错误:不允许从数据类型 varchar 到 varbinary(max) 的隐式转换。使用 CONVERT 函数运行此查询
【发布时间】:2014-04-14 20:24:03
【问题描述】:

这是我上传图片的程序:

 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();
    }
}

然后它会抛出以下错误:

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

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

【问题讨论】:

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

标签: c# asp.net sql sql-server


【解决方案1】:

您可能已将 fdata 声明为 byte[],但读取的代码部分

... + "','" + fdata + "','" + ....

将其强制转换为字符串,以便它可以成为命令文本的一部分

你将不得不参数化查询

【讨论】:

    猜你喜欢
    • 2018-06-07
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    相关资源
    最近更新 更多