PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cột postgres bytea đang trả về chuỗi (mảng char) thay vì mảng byte

Trong Npgsql có NpgsqlDataReader lớp để truy xuất các hàng đã chèn, ví dụ:

NpgsqlConnection conn = new NpgsqlConnection(connStr);
conn.Open();

NpgsqlCommand insertCmd =
    new NpgsqlCommand("INSERT INTO binaryData (data) VALUES(:dataParam)", conn);
NpgsqlParameter param = new NpgsqlParameter("dataParam", NpgsqlDbType.Bytea);

byte[] inputBytes = BitConverter.GetBytes((int)0);
Console.Write("Input:");
foreach (byte b in inputBytes)
    Console.Write(" {0}", b);
Console.WriteLine();

param.Value = inputBytes;
insertCmd.Parameters.Add(param);
insertCmd.ExecuteNonQuery();

NpgsqlCommand selectCmd = new NpgsqlCommand("SELECT data FROM binaryData", conn);
NpgsqlDataReader dr = selectCmd.ExecuteReader();
if(dr.Read())
{
    Console.Write("Output:");
    byte[] result = (byte[])dr[0];
    foreach(byte b in result)
        Console.Write(" {0}", b);
    Console.WriteLine();
}

conn.Close();

Kết quả từ ứng dụng C #:

Input: 0 0 0 0
Output: 0 0 0 0

Kết quả từ pgAdmin:

"\000\000\000\000"

CHỈNH SỬA:

Tôi đã tìm thấy lời giải thích tại sao bạn nhận được:

92 48 48 48 48 48 48 48 48

Tôi đã kiểm tra mã của mình với phiên bản trước Npgsql2.0.10-bin-ms.net3.5sp1.zip và nhận được kết quả trên (tất nhiên pgAdmin trả về \000\000\000\000 ), vì vậy tôi nghĩ rằng điều tốt nhất bạn có thể làm là sử dụng một phiên bản khác không có lỗi này.

TRẢ LỜI: Người dùng phiên bản Npgsql cao hơn 2.0.10



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm sự khác biệt giữa các dấu thời gian tính bằng giây trong PostgreSQL

  2. Postgresql 9.x:Chỉ mục để tối ưu hóa các truy vấn `xpath_exists` (XMLEXISTS)

  3. Cài đặt PostGIS Homebrew tham chiếu đến một đường dẫn cũ?

  4. Làm cách nào để bạn tạo một người dùng chỉ đọc trong PostgreSQL?

  5. Tạo một chuỗi có các giá trị là sự kết hợp của ký tự và số