Рейтинг:
12
Sid_Joshi
public byte[] convertImageToByteArray(System.Drawing.Image image)
{
MemoryStream ms = new MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
// or whatever output format you like
return ms.ToArray();
}
//Save Data
private void button1_Click(object sender, EventArgs e)
{
byte[] imgbnry = convertImageToByteArray(pictureBox1.Image);
string str = "insert into tbl_img (id,photo)values('" + textBox1.Text + "',@img)";
string ConStr = @"Server=COMP7;Database=ImageTest;User Id=sa;Password=cos123";
SqlConnection con = new SqlConnection(ConStr);
con.Open();
SqlCommand cmd = new SqlCommand(str, con);
cmd.Parameters.AddWithValue("@img", imgbnry);
int n = cmd.ExecuteNonQuery();
if (n > 0)
{
MessageBox.Show("Successfully inserted");
}
else
{
MessageBox.Show("Not inserted");
}
}
//retrive Data
Collapse | Copy Code
private void button2_Click(object sender, EventArgs e)
{
string str = "select photo from tbl_img where id='" + textBox2.Text + "'";
string ConStr = @"Server=COMP7;Database=ImageTest;User Id=sa;Password=cos123";
SqlConnection con = new SqlConnection(ConStr);
con.Open();
SqlDataAdapter da = new SqlDataAdapter(str, con);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
byte[] imgdata = new byte[0];
imgdata = (byte[])dt.Rows[0][0];
MemoryStream ms = new MemoryStream(imgdata);
pictureBox2.Image = Image.FromStream(ms);
}
else
{
MessageBox.Show("No images in a table");
}
}
используйте тип данных image для хранения изображения на sql server.
прикрепите эту таблицу к отчету crystal.
Member 11335460
Спасибо за ответ.
При извлечении изображения он дает исключение ,
Значение параметра системы"не является допустимым"
Sid_Joshi
какой тип данных вы используете?
используйте тип данных Image для хранения изображения на sql server
Member 11335460
да я использую image datatype но все равно получил такое же исключение
Sid_Joshi
откуда у вас ошибка?
в crystal report или показ изображения в pictureBox2?
Member 11335460
Я получаю ошибку при показе изображения "pictureBox2. Image = Image.FromStream (ms);" на этой линии.
Sid_Joshi
проверять
imgdata = (byte[])dt. Rows[0][0];
второй [0] - это индекс столбца. используйте правильный индекс для столбца изображения
Sklbns
Мне тоже, я получил ту же ошибку.
это мой запрос " выберите изображение из qrcode, где qr_no = 10"
это ошибка"System ArgumentException" параметр недопустим"
Member 11335460
- Спасибо, сэр.
но на кристалл изображение не отображается
Sid_Joshi
Перетащите изображение поля на отчет Crystal из области проводника-&ГТ;поле&базы данных и GT;имя-&ГТ таблица;столбец имя
Member 11335460
- Спасибо, сэр.
Это мне очень помогает.
Member 13373336
Для тех, кто получает сообщение "параметр недопустим", проверьте свой оператор insert из строки str. Убедитесь, что у вас нет одинарных кавычек вокруг @img при отправке изображения.
Если вы выполните отладку, то увидите, что в разделе imgdata у вас есть только 4-5 индексов. Если вы проверите значения ascii в элементах, вы заметите, что они представляют @ i m g, потому что это то, что вы пишете в SQL при сохранении изображения (если вы запросите таблицу в SQL, вы заметите, что значение поля короткое. Изображения не короткие).
Надеюсь, это поможет!