Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak wstawić/pobrać pliki programu Excel do kolumny varbinary(max) w programie SQL Server 2008?

Jeśli chcesz to zrobić w zwykłym ADO.NET, a twoje pliki Excela nie są zbyt duże, aby mogły zmieścić się w pamięci za jednym razem, możesz użyć tych dwóch metod:

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

Aby odzyskać arkusz Excela i zapisać go w pliku, użyj tej metody:

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

Oczywiście możesz dostosować to do swoich potrzeb – możesz też zrobić wiele innych rzeczy – w zależności od tego, co naprawdę chcesz zrobić (niezbyt jasne z twojego pytania).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skrypt do usuwania wszystkich obiektów niesystemowych w SQL Server 2008

  2. Wydajność serwera SQL i kolejność pól

  3. znajdź zmienną długość dla typu danych serwera sql nvarchar z kodu c#

  4. Zmień język dla bieżącej sesji w SQL Server

  5. Porównaj kolumny, w których jedna jest podobna do części drugiej