Bạn có một số vấn đề với mã của mình. Tôi sẽ giải quyết từng dòng một:
MemoryStream ms =new MemoryStream();
byte[] PhotoByte=null;
PhotoByte=ms.ToArray();
pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
PhotoByte =ms.ToArray();
Mặc dù nó không phải là một vấn đề, nhưng bạn có những bài tập không cần thiết ở đây. Đoạn mã trên có thể được viết rõ ràng hơn theo cách này:
MemoryStream ms =new MemoryStream();
pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
byte[] PhotoByte =ms.ToArray();
Tiếp theo, đoạn mã sau không sử dụng các tham số. Luôn luôn, luôn luôn, LUÔN LUÔN tham số hóa các truy vấn SQL của bạn thay vì xây dựng động SQL. Không, nghiêm túc, luôn luôn. Có, ngay cả khi đó. (Ngoài ra, Str
là gì Biến đổi? Một số loại biến phiên bản được sử dụng lại? Đừng làm vậy.)
Str = "insert into Experimmm Values('" + PhotoByte + "','" + textBox1.Text + "')";
Conn.Open();
cmd.Connection = Conn;
cmd.CommandText = Str;
cmd.ExecuteNonQuery();
Conn.Close();
Thay vào đó, nó phải là:
Conn.Open();
using(SqlCommand cmd = connection.CreateCommand())
{
cmd.CommandText = "insert into Experimmm (column list) values(@data, @name)";
cmd.Parameters.Add("@data", SqlDbType.VarBinary).Value = PhotoByte;
cmd.Parameters.Add("@name", SqlDbType.VarChar, yourlength).Value = textBox1.Text;
cmd.ExecuteNonQuery();
}
Conn.Close();
Tiếp theo, chúng tôi sẽ chuyển sang phần truy xuất của bạn. Một lần nữa với Str
biến, đừng làm điều này. Ngoài ra, bạn cũng cần tham số hóa truy vấn này.
byte[] data;
string name;
Conn.Open();
using(SqlCommand cmd = Conn.CreateCommand())
{
cmd.CommandText = "select column_list from Experimmm where id = @id";
cmd.Parameters.Add("@id", SqlDbType.VarChar, field_length).Value = textBox2.Text;
using(SqlDataReader dr = cmd.ExecuteReader())
{
if (dr.Read())
{
data = (byte[])dr.GetValue(0);
name = (string)dr.GetValue(1);
}
}
}
Conn.Close();
label1.Text = name;
pictureBox2.Image = Image.FromStream(new MemoryStream(data));