byte[] bphoto = File.ReadAllBytes(@textBox1.Text);
            strsql = "insert into baseinformation(kjh) values(@jh)";
            try
            {
                //插入图片信息
                MySql.Data.MySqlClient.MySqlConnection sqlcon = new MySql.Data.MySqlClient.MySqlConnection(dc.conStr);
                MySql.Data.MySqlClient.MySqlCommand sqlcom = new MySql.Data.MySqlClient.MySqlCommand();
                sqlcom.Connection = sqlcon;
                sqlcom.CommandText = strsql;
                sqlcom.CommandType = CommandType.Text;
                sqlcom.Parameters.Add("@spic", MySql.Data.MySqlClient.MySqlDbType.LongBlob).Value = bphoto;
                sqlcon.Open();
                sqlcom.ExecuteNonQuery();
                sqlcon.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }MySql.Data.Dll版本6.2.3.0 总是报错 哪位能指点小生一下啊~~

解决方案 »

  1.   

    错误信息如下:
    You have an error in your SQL syntax; check the manual that corresponds to you MYSQL server version for the right syntax to use near...(后面是一堆乱码)
      

  2.   

    不是程序的问题,你插入是写成存储过程还是写SQL插入的
      

  3.   

    我是写sql语句插入的。strsql = “insert into test(img) values(@spic)”;
      

  4.   

    给你一段示例代码,参考一下,应该是你的代码的问题:
    public void InsertBinary()
    {
                int lenIn = 400000;
    byte[] dataIn = Utils.CreateBlob(lenIn);
    MySqlCommand cmd2 = new MySqlCommand("SELECT * FROM Test", conn);
    MySqlDataReader reader2 = cmd2.ExecuteReader();
    reader2.Read();
    reader2.Close(); MySqlCommand cmd = new MySqlCommand("TRUNCATE TABLE Test", conn);
    cmd.ExecuteNonQuery(); cmd.CommandText = "INSERT INTO Test VALUES (?id, ?b1, NULL)";
    cmd.Parameters.Add(new MySqlParameter("?id", 1));
    cmd.Parameters.Add(new MySqlParameter("?b1", dataIn));
    int rows = cmd.ExecuteNonQuery(); byte[] dataIn2 = Utils.CreateBlob(lenIn);
    cmd.Parameters[0].Value = 2;
    cmd.Parameters[1].Value = dataIn2;
    rows += cmd.ExecuteNonQuery(); Assert.AreEqual(2, rows, "Checking insert rowcount"); MySqlDataReader reader = null;
    try
    {
    cmd.CommandText = "SELECT * FROM Test";
    reader = cmd.ExecuteReader();
    Assert.AreEqual(true, reader.HasRows, "Checking HasRows"); reader.Read(); byte[] dataOut = new byte[lenIn];
    long lenOut = reader.GetBytes(1, 0, dataOut, 0, lenIn); Assert.AreEqual(lenIn, lenOut, "Checking length of binary data (row 1)"); // now see if the buffer is intact
    for (int x = 0; x < dataIn.Length; x++)
    Assert.AreEqual(dataIn[x], dataOut[x], "Checking first binary array at " + x); // now we test chunking
    int pos = 0;
    int lenToRead = dataIn.Length;
    while (lenToRead > 0)
    {
    int size = Math.Min(lenToRead, 1024);
    int read = (int)reader.GetBytes(1, pos, dataOut, pos, size);
    lenToRead -= read;
    pos += read;
    }
    // now see if the buffer is intact
    for (int x = 0; x < dataIn.Length; x++)
    Assert.AreEqual(dataIn[x], dataOut[x], "Checking first binary array at " + x); reader.Read();
    lenOut = reader.GetBytes(1, 0, dataOut, 0, lenIn);
    Assert.AreEqual(lenIn, lenOut, "Checking length of binary data (row 2)"); // now see if the buffer is intact
    for (int x = 0; x < dataIn2.Length; x++)
    Assert.AreEqual(dataIn2[x], dataOut[x], "Checking second binary array at " + x);
    }
    catch (Exception ex)
    {
    Assert.Fail(ex.Message);
    }
    finally
    {
    if (reader != null) reader.Close();
    }
    }