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

डेटाबेस में छवि स्टोर करें और इसे पुनर्प्राप्त करें

आपको अपने कोड के साथ कई समस्याएं हैं। मैं इसे पंक्ति-दर-पंक्ति संबोधित करूंगा:

MemoryStream ms =new MemoryStream();
byte[] PhotoByte=null;
PhotoByte=ms.ToArray();
pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
PhotoByte =ms.ToArray();

जबकि यह कोई समस्या नहीं है, आपके पास यहां अनावश्यक कार्य हैं। ऊपर दिए गए कोड को इस तरह से अधिक स्पष्ट रूप से लिखा जा सकता है:

MemoryStream ms =new MemoryStream();
pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
byte[] PhotoByte =ms.ToArray();

अगला, निम्न कोड पैरामीटर का उपयोग नहीं कर रहा है। हमेशा, हमेशा, हमेशा SQL को गतिशील रूप से बनाने के बजाय अपनी SQL क्वेरी को पैरामीटराइज़ करें। नहीं, गंभीरता से, हमेशा। हाँ, तब भी। (साथ ही, Str क्या है चर? किसी प्रकार का पुन:उपयोग किया गया उदाहरण चर? ऐसा मत करो।)

Str = "insert into Experimmm Values('" + PhotoByte + "','" + textBox1.Text + "')";
Conn.Open();
cmd.Connection = Conn;
cmd.CommandText = Str;
cmd.ExecuteNonQuery();
Conn.Close();

इसके बजाय, यह होना चाहिए:

Conn.Open();
using(SqlCommand cmd = connection.CreateCommand())
{
    cmd.CommandText = "insert into Experimmm (column list) values(@data, @name)";

    cmd.Parameters.Add("@data", SqlDbType.VarBinary).Value = PhotoByte;
    cmd.Parameters.Add("@name", SqlDbType.VarChar, yourlength).Value = textBox1.Text;

    cmd.ExecuteNonQuery();
}
Conn.Close();

इसके बाद, हम आपकी पुनर्प्राप्ति पर आगे बढ़ेंगे। फिर से Str . के साथ परिवर्तनशील, इस प्रकार का कार्य न करें। साथ ही, आपको इस क्वेरी को भी पैरामीटराइज़ करने की आवश्यकता है।

byte[] data;
string name;

Conn.Open();
using(SqlCommand cmd = Conn.CreateCommand())
{    
    cmd.CommandText = "select column_list from Experimmm where id = @id";

    cmd.Parameters.Add("@id", SqlDbType.VarChar, field_length).Value = textBox2.Text;

    using(SqlDataReader dr = cmd.ExecuteReader())
    {
        if (dr.Read())
        {
            data = (byte[])dr.GetValue(0); 
            name = (string)dr.GetValue(1);
        }
    }
}
Conn.Close();

label1.Text = name;
pictureBox2.Image = Image.FromStream(new MemoryStream(data));


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में "विभाजन योजना '...' का कोई अगला उपयोग किया गया फ़ाइल समूह नहीं है" को कैसे ठीक करें

  2. एसएसएमएस - एसक्यूएल सर्वर / टीएसक्यूएल ट्यूटोरियल पार्ट 22 में ऑब्जेक्ट एक्सप्लोरर डिटेल विंडोज का उपयोग करके कई ऑब्जेक्ट्स को कैसे हैंडल करें

  3. मैं टी-एसक्यूएल में एक स्ट्रिंग से विस्तारित ASCII वर्ण कैसे निकालूं?

  4. HH:MM:SS प्रारूप में DatedIFF

  5. एसक्यूएल स्ट्रिंग को शब्दों में विभाजित करें