일반 데이터 처리는 간단히 진행했으나 이미지 처리는 자료를 많이 찾아봐야했다.
결과적으로 복잡하지는 않는데 여러곳을 참고해야했다.
처리 후에 알았는데 그리드에서 자동으로 이미지가 나올줄 몰랐다.
//저장하기
NpgsqlConnection conn = new NpgsqlConnection(connstring);
conn.Open();
// quite complex sql statement
string sql = string.Format(@"
INSERT INTO io_table(
id, iotime, deviceid, userid, image)
VALUES ({0}, '{1}', '{2}', '{3}', :image)",
dataGridView1.Rows.Count + 1
, DateTime.Now.ToString("yyyyMMdd HH:mm:ss"), 1, 0001)
;
// ファイルの内容をバイト配列に展開
//byte[] bytes = File.ReadAllBytes("Lenna.jpg");
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
byte[] bytes = ms.ToArray();
//var sql = @"INSERT INTO test (image) VALUES (:image)";
// データ登録
//var cmd = new NpgsqlCommand(sql, con);
//cmd.Parameters.Add(new NpgsqlParameter("image", NpgsqlDbType.Bytea) { Value = bytes });
//cmd.ExecuteNonQuery();
NpgsqlCommand comm = new NpgsqlCommand(sql, conn);
comm.Parameters.Add(new NpgsqlParameter("image", NpgsqlDbType.Bytea) { Value = bytes });
comm.ExecuteNonQuery();
MessageBox.Show("Ok.");
// 불러오기
Type type = dr[5].GetType();
if (type != DBNull.Value.GetType())
{
MemoryStream ms = new MemoryStream((byte[])dr[5]);
Image returnImage = Image.FromStream(ms);
pictureBox2.Image = returnImage;
}
else
{
pictureBox2.Image = null;
}