sql >> Databáze >  >> RDS >> Sqlserver

Jak mohu vložit/načíst soubory aplikace Excel do sloupce varbinary(max) na serveru SQL Server 2008?

Pokud to chcete udělat přímo v ADO.NET a vaše excelové soubory nejsou příliš velké, aby se vešly do paměti najednou, můžete použít tyto dvě metody:

// store Excel sheet (or any file for that matter) into a SQL Server table
public void StoreExcelToDatabase(string excelFileName)
{
    // if file doesn't exist --> terminate (you might want to show a message box or something)
    if (!File.Exists(excelFileName))
    {
       return;
    }

    // get all the bytes of the file into memory
    byte[] excelContents = File.ReadAllBytes(excelFileName);

    // define SQL statement to use
    string insertStmt = "INSERT INTO dbo.YourTable(FileName, BinaryContent) VALUES(@FileName, @BinaryContent)";

    // set up connection and command to do INSERT
    using (SqlConnection connection = new SqlConnection("your-connection-string-here"))
    using (SqlCommand cmdInsert = new SqlCommand(insertStmt, connection))
    {
         cmdInsert.Parameters.Add("@FileName", SqlDbType.VarChar, 500).Value = excelFileName;
         cmdInsert.Parameters.Add("@BinaryContent", SqlDbType.VarBinary, int.MaxValue).Value = excelContents;

         // open connection, execute SQL statement, close connection again
         connection.Open();
         cmdInsert.ExecuteNonQuery();
         connection.Close();
    }
}

Chcete-li list aplikace Excel načíst zpět a uložit jej do souboru, použijte tuto metodu:

public void RetrieveExcelFromDatabase(int ID, string excelFileName)
{
    byte[] excelContents;

    string selectStmt = "SELECT BinaryContent FROM dbo.YourTableHere WHERE ID = @ID";

    using (SqlConnection connection = new SqlConnection("your-connection-string-here"))
    using (SqlCommand cmdSelect = new SqlCommand(selectStmt, connection))
    {
        cmdSelect.Parameters.Add("@ID", SqlDbType.Int).Value = ID;

        connection.Open();
        excelContents = (byte[])cmdSelect.ExecuteScalar();
        connection.Close();
    }

    File.WriteAllBytes(excelFileName, excelContents);
 }

Samozřejmě si to můžete přizpůsobit svým potřebám – můžete dělat i spoustu dalších věcí – v závislosti na tom, co opravdu chcete dělat (z vaší otázky to není příliš jasné).



  1. Balíček:cx_Oracle pro Python 3.5, windows64 bit. Oracle 11.2.0.1.0

  2. docker-compose rails rake db:reset selže, nelze zrušit aktuálně otevřenou databázi

  3. Použití aktuálního času v UTC jako výchozí hodnoty v PostgreSQL

  4. Kvíz o výkonu a ladění Oracle