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