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 总是报错 哪位能指点小生一下啊~~
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...(后面是一堆乱码)
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();
}
}