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

छवियों को एक varbinary (अधिकतम) कॉलम में कैसे स्टोर करें?

फ़ाइल को बाइट सरणी में पढ़ने के लिए इसका उपयोग करें:

    // Old fashioned way
    public static byte[] ReadFile(string filePath)
    {
        byte[] buffer;
        FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
        try
        {
            int length = (int)fileStream.Length;  // get file length
            buffer = new byte[length];            // create buffer
            int count;                            // actual number of bytes read
            int sum = 0;                          // total number of bytes read

            // read until Read method returns 0 (end of the stream has been reached)
            while ((count = fileStream.Read(buffer, sum, length - sum)) > 0)
                sum += count;  // sum is a buffer offset for next reading
        }
        finally
        {
            fileStream.Close();
        }
        return buffer;
    }

या

    // Thanks Magnus!
    byte[] data = System.IO.File.ReadAllBytes(filePath);

फिर इसका उपयोग करके छवि डेटा को सहेजें (मैं एक छवि वर्ग "उदाहरण" का उपयोग कर रहा हूं जिसमें मेरी छवि जानकारी और उदाहरण में बाइट सरणी है। डेटा):

   using(SqlCommand cm = new SqlCommand("SaveImage", connection, transaction)){
       cm.CommandType = CommandType.StoredProcedure;
       cm.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int,0, ParameterDirection.InputOutput, false, 10, 0, "Id", DataRowVersion.Current, (SqlInt32)instance.Id));
       cm.Parameters.Add(new SqlParameter("@Title", SqlDbType.NVarChar,50, ParameterDirection.Input, false, 0, 0, "Title", DataRowVersion.Current, (SqlString)instance.Title));
       if (instance.Data.Length > 0)
       {
           cm.Parameters.Add(new SqlParameter("@Data", SqlDbType.VarBinary,instance.Data.Length, ParameterDirection.Input, false, 0, 0, "Data", DataRowVersion.Current, (SqlBinary)instance.Data));
       }
       else
       {
           cm.Parameters.Add(new SqlParameter("@Data", SqlDbType.VarBinary,0, ParameterDirection.Input, false, 0, 0, "Data", DataRowVersion.Current, DBNull.Value));                    
       }

       cm.ExecuteNonQuery();
   )

और यहाँ एक उदाहरण संग्रहीत कार्यविधि है:

CREATE PROCEDURE SaveImage
(
@Id int OUTPUT 
,@Title nvarchar(50)
,@Data varbinary(MAX)
)
AS
SET NOCOUNT ON
SET XACT_ABORT ON

IF @Id IS NULL OR @Id <= 0
BEGIN
SELECT @Id = ISNULL(MAX([Id]),0) + 1 FROM [dbo].[Images]
END

INSERT INTO [dbo].[Images] (
[Id]
,[Title]
,[Data]
) VALUES (
@Id
,@Title
,@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. SQL सर्वर में दिनांक से दिन का नाम प्राप्त करने के 3 तरीके (T-SQL)

  3. डेटाबेस मेल ट्यूटोरियल

  4. SQL सर्वर ट्रिगर - भाग 2 DDL और लॉगऑन ट्रिगर

  5. SQL सर्वर (T-SQL) में डेटाबेस मेल खातों और डेटाबेस प्रिंसिपल के बीच संबंध खोजें