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

C# का उपयोग करके PostgreSql से छवि कैसे डालें और पुनर्प्राप्त करें

AFAIK आप ExecuteScalar का उपयोग करके बाइट [] पुनर्प्राप्त नहीं कर सकते हैं। आपको इसके बजाय ExecuteReader का उपयोग करना चाहिए। मापदंडों को सम्मिलित करते समय सुरक्षित पक्ष पर रहने के लिए, मैं स्वयं प्रकार निर्दिष्ट करना पसंद करता हूं, इसलिए मेरा सम्मिलन इस तरह दिखता है:

using (var conn = new NpgsqlConnection(connString))
{
    string sQL = "insert into picturetable (id, photo) VALUES(65, @Image)";
    using (var command = new NpgsqlCommand(sQL, conn))
    {
        NpgsqlParameter param = command.CreateParameter();
        param.ParameterName = "@Image";
        param.NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.Bytea;
        param.Value = ImgByteA;
        command.Parameters.Add(param);

        conn.Open();
        command.ExecuteNonQuery();
    }
}

फिर मैं इस तरह की छवि को पुनः प्राप्त और लोड कर सकता हूं:

using (var conn = new NpgsqlConnection(connString))
{
    string sQL = "SELECT photo from picturetable WHERE id = 65";
    using (var command = new NpgsqlCommand(sQL, conn))
    {
        byte[] productImageByte = null;
        conn.Open();
        var rdr = command.ExecuteReader();
        if (rdr.Read())
        {
            productImageByte = (byte[])rdr[0];
        }
        rdr.Close();
        if (productImageByte != null)
        {
            using (MemoryStream productImageStream = new System.IO.MemoryStream(productImageByte))
            {
                ImageConverter imageConverter = new System.Drawing.ImageConverter();
                pictureBox1.Image = imageConverter.ConvertFrom(productImageByte) as System.Drawing.Image;
            }
        }
    }
}

मुझे नहीं पता कि डालने पर डेटाटाइप निर्दिष्ट करने से कोई फर्क पड़ता है, इसलिए पहले रीडर का उपयोग करके पुनर्प्राप्त करने का प्रयास करें। अगर वह काम नहीं करता है, तो मेरा सुझाव है कि आप अपनी सम्मिलित दिनचर्या को मेरे जैसे कुछ में बदल दें।

कृपया ध्यान दें कि मेरे उदाहरण में आईडी एक पूर्णांक है, न कि कोई वर्ण भिन्न!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ecto Fragments . का उपयोग करके टाइमस्टैम्प में अंतराल जोड़ें

  2. मैं PostgreSQL में दोहराने वाली संख्याओं की एक श्रृंखला कैसे उत्पन्न कर सकता हूं?

  3. एक बड़ी तालिका में पूर्ण डुप्लिकेट पंक्तियों की जाँच करें

  4. PL/pgSQL में '$$' का उपयोग किस लिए किया जाता है?

  5. ubuntu में Postgres डेटाबेस फ़ाइलें कहाँ सहेजी जाती हैं?