Как получить двоичные данные из типа данных bytea в postgres
У нас есть данные в сериализованной двоичной форме.Теперь мы должны хранить его в базе данных PostGre.
Для вставки мы сохранили код в столбце данных bytea .
И используйте следующий код:
using (FileStream pgFileStream = new FileStream("F:\\Test.abc", FileMode.Open, FileAccess.Read)) { using (BinaryReader pgReader = new BinaryReader(new BufferedStream(pgFileStream))) { NpgsqlCommand command = new NpgsqlCommand(); byte[] ByteA = pgReader.ReadBytes(Convert.ToInt32(pgFileStream.Length)); command.CommandText = "insert into ptadata (memberid, filedata) VALUES (03, @data)"; command.Connection = m_IDBcloudConnection; //m_IDBcloudConnection.Close(); if (m_IDBcloudConnection.State != ConnectionState.Open) { m_IDBcloudConnection.Open(); } command.Parameters.Add("@data", ByteA).Value = ByteA; command.ExecuteNonQuery(); m_IDBcloudConnection.Close(); } }Но когда мы пытаемся извлечь его ,приходит в виде байта.
Как я могу получить данные в сериализованной двоичной форме?
Что я уже пробовал:
using (FileStream pgFileStream = new FileStream("F:\\Test.abc", FileMode.Open, FileAccess.Read)) { using (BinaryReader pgReader = new BinaryReader(new BufferedStream(pgFileStream))) { NpgsqlCommand command = new NpgsqlCommand(); byte[] ByteA = pgReader.ReadBytes(Convert.ToInt32(pgFileStream.Length)); command.CommandText = "insert into ptadata (memberid, filedata) VALUES (03, @data)"; command.Connection = m_IDBcloudConnection; //m_IDBcloudConnection.Close(); if (m_IDBcloudConnection.State != ConnectionState.Open) { m_IDBcloudConnection.Open(); } command.Parameters.Add("@data", ByteA).Value = ByteA; command.ExecuteNonQuery(); m_IDBcloudConnection.Close(); } }
Afzaal Ahmad Zeeshan
Но зачем хранить данные в базе данных? Почему большой двоичный объект не может быть сохранен в файловой системе, а его отношение (путь к файлу) - в записи с символьным типом данных?
ashishsri
На самом деле я хочу сохранить наш проект в postgre, а проект-это двоичный сериализованный файл.
в базе данных postgre нет типа данных blob, поэтому мы используем тип данных bytea в postgre.