PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

पोस्टग्रेज बाइटिया कॉलम बाइट सरणी के बजाय स्ट्रिंग (चार सरणी) लौटा रहा है

Npgsql में NpgsqlDataReader है। सम्मिलित पंक्तियों को पुनः प्राप्त करने के लिए वर्ग, उदा:

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();

सी# ऐप से परिणाम:

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

पीजीएडमिन से परिणाम:

"\000\000\000\000"

संपादित करें:

मुझे स्पष्टीकरण मिला कि आपको क्यों मिल रहा है:

92 48 48 48 48 48 48 48 48

मैंने पिछले संस्करण . के साथ अपना कोड चेक किया Npgsql2.0.10-bin-ms.net3.5sp1.zip और उपरोक्त परिणाम प्राप्त करें (बेशक pgAdmin \000\000\000\000 लौटाता है) ), इसलिए मुझे लगता है कि इस बग के बिना किसी अन्य संस्करण का उपयोग करना सबसे अच्छा है।

उत्तर: 2.0.10 की तुलना में Npgsql का उपयोगकर्ता उच्चतर संस्करण



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टग्रेज़ सॉर्टिंग समस्या

  2. रेल में ActiveRecord का उपयोग करके डेटाबेस से प्रत्येक nth पंक्ति लौटाएं

  3. प्राथमिक कुंजी को अद्यतन करने के लिए SQL उत्पन्न करें

  4. वे मान खोजें जिनमें PostgreSQL में संख्याएँ नहीं हैं

  5. PostgreSQL - विदेशी कुंजी संदर्भ पारस्परिक रूप से अनन्य तालिकाएँ