#asp.net #vb.net #sql-server-2008
#asp.net #vb.net #sql-server-2008
Вопрос:
Мне просто интересно, возможно ли это. У меня есть сайт, который администраторы используют для добавления продуктов в нашу базу данных. База данных находится на SQL Server 2008, и я использую Visual Studio 2010, используя VB.net и надеялся, что при добавлении нового продукта он автоматически сгенерирует папку, присвоенную идентификатору этого продукта.
Я не нашел в Интернете ничего, что указывало бы на то, что это возможно, но для меня это было бы намного проще. На данный момент мне нужно не забыть создать папку на диске X: для каждого добавленного продукта. Сейчас у нас до 645 продуктов, так что вы можете видеть мою потребность в какой-то автоматизации здесь.
Любая помощь была бы высоко оценена!
Комментарии:
1. Нужно ли запускать это исключительно из контекста этой базы данных или вы можете запустить службу, которая проверяет наличие новых продуктов и создает папки из этого?
2. Я действительно не знаю. Если это можно сделать из веб-службы, это нормально, я просто никогда не слышал о чем-то подобном. Я надеялся, что кто-нибудь скажет мне, что они делали это раньше, и покажет мне, как. Я понятия не имею, с чего начать.
3. Вы могли бы заставить сайт создавать каталог во время добавления продуктов в базу данных. Это позволило бы базе данных не «пачкать руки», создавая каталоги.
4. Я могу просто добавить некоторый код на свою страницу vb, нажав кнопку отправки, которая добавляет новый продукт? Я буду продолжать что-то искать, но мне не везет, если вы знаете, как я мог бы это сделать, я был бы признателен за пример кода.
Ответ №1:
Если вы используете веб-сервис или веб-проект для создания продуктов, вы могли бы создать каталог там, когда пользователь вводит новый продукт.
Dim dir As New System.IO.DirectoryInfo("C:" amp; someFolder)
If Not dir.Exists Then
dir.Create()
End If
Комментарии:
1. Вы знаете, как я мог бы сделать ‘someFolder’ идентификатором текущего элемента? Я хотел использовать IDENT_CURRENT, но поскольку это не оператор sql, я не знаю, поместил бы я это в инструкцию, которую вы написали.
2. Хм, неважно. Я думаю, что использование сеанса («ProductID») будет работать.
3. Я использовал этот код с Session («ProductID») и получил сообщение об ошибке
Could not find a part of the path 'X:645'.
Есть предложения?4. Может быть проблема с разрешениями. Если вы запускаете сайт как СЕТЕВУЮ СЛУЖБУ или какую-либо учетную запись, у которой нет доступа к созданию каталогов на X: , это может быть проблемой.
5. Ну, я могу создавать папки в Visual Studio просто отлично. Затем, когда я захожу на диск X и создаю там папки, это тоже работает. Должен ли я просто придерживаться ручного способа сделать это? Я действительно хотел бы, чтобы это сработало. Но когда другие пользователи добавят продукты, они не смогут добавлять папки, потому что у них не будет доступа, да?
Ответ №2:
Если продукты всегда добавляются в вызов хранимой процедуры, вы могли бы добавить код для вызова xp_cmdshell в «MD < имя_папки >» после вставки. Если это не сделано с помощью хранимых процедур, вы могли бы сделать что-то подобное в триггере вставки. Однако, обе эти действительно плохие идеи. SQL — это прежде всего компонент database engine, а не менеджер файловой системы или гибкий инструмент программирования. Гораздо лучше, если приложения, которые вызывают создание продуктов, будут отвечать за управление файлами и папками на ваших жестких дисках.
Комментарии:
1. … действительно плохие идеи, которые я видел, как люди предлагали делать раньше. Идея не новая, просто она постоянно всплывает.