Есть ли возможность прикрепить файлы PDF или файлы любого типа к записи БД в SQL Server 2008 R2 из приложения С#, созданного с помощью VS 2012.
Есть ли возможность прикрепить файлы PDF или файлы любого типа к записи БД в SQL Server 2008 R2 из приложения С#, созданного с помощью VS 2012.
Если возможно. У вас есть три альтернативы:
Сохраняйте файл непосредственно в базе данных как тип
Blob
и сохраняйте двоичный файл напрямую.Сохраните файл непосредственно в базе данных с типом
FileStream
.Сохраните файл на диске и сохраните путь к файлу в поле вашей таблицы в базе данных.
Каждая альтернатива имеет свои плюсы и минусы после нескольких обсуждений. Самый рекомендуемый, который я видел для SQL Server (по крайней мере, для изображений, но он применим к любому типу файлов), — это второй . В случае, если вы не используете SQL Server, второй вариант исключен, и я бы рекомендовал третий, потому что он облегчает обслуживание файлов, база данных не такая тяжелая, есть разделение задач, это облегчает тесты и т. д. .
Здесь больше информации об этом: https://stackoverflow.com/q/3748/1065197
Да можно, хотя и не рекомендуется
Вы можете объявить свой столбец, как
VARBINARY
в SqlИ код для загрузки файла будет примерно таким:
Работа с файлами в базе данных не очень хорошая практика, поскольку вставки и запросы дороже, чем простой текст или какой-либо другой числовой тип. Но если это возможно.
Здесь эта тема затронута на английском языке, посмотрите ;)
На самом деле не имеет значения, какую версию IDE вы используете, с C# вы можете делать много вещей, и среди них вы можете сериализовать файл (PDF или любой другой) в строку Base64 и сохранить его как строку:
Здесь
[ASP.NET] Сохранить файл в базе данных
Я объясняю, как можно было вставить файл в поле таблицы
Как видите, поле типа определено в таблице
varbinary
и для вставки необходимо передатьINSERT
в качестве параметра массив байтов.Если ваше приложение
winforms
очень простое, вы просто используете File.ReadAllBytes () .В примере ссылки полезный код находится на уровне сохраняемости.
генерация параметра в INSERT, который позволяет назначать byte[] файла
Я бы также рекомендовал валидации, если вам не полезно определить поле как
FileStream
, для упомянутой вами версииSql Server
вы можете использовать его, и это более оптимально при регистрации файлов в БД.Введение в SQL Server FileStream
Как мне: использовать файловый поток SQL