Вам удалось создать таблицу с именами столбцов в нижнем регистре. Как вы уже знаете, это вызывает проблемы, поскольку Oracle по умолчанию преобразует все имена (для таблиц, столбцов и т. Д.) В верхний регистр.
У вас есть два варианта:
Бросить таблицу и воссоздать ее с заглавными именами.
Используйте двойные кавычки вокруг имен столбцов, чтобы Oracle не мог преобразовать их в верхний регистр:
select * from jashan.student where "name1"=? and "password"=?
Или когда вы помещаете его в Java :
PreparedStatement stmt = con.prepareStatement("select * from jashan.student where \"name1\"=? and \"password\"=?");
В любом случае, одинарные кавычки вокруг имен столбцов неверны.
Я бы предложил запустить процесс как запланированную задачу, если вы можете, и написание услуги, только если вам нужно. Службы немного сложнее написать (правильно), и если вы выполняете свой процесс по какому-либо расписанию, вам гораздо лучше использовать планировщик Windows, чем пытаться создать собственный планировщик (в рамках servce).
Если вы пытаетесь выбрать между ними, тогда очевидно, что использование планировщика заданий является приемлемым вариантом. И если использование планировщика заданий является жизнеспособным вариантом, то создание службы почти наверняка является неправильным выбором.
Зависит от того, насколько регулярно он вам нужен.
Если его что-то, что должно выполняться каждые 60 секунд в течение всего дня, я бы пошел со службой Windows.
Если это то, что нужно запускать только один раз в день, я бы пошел с запланированной задачей
Что-нибудь посередине. .. Используй свое суждение :)
Начните с консольного приложения. Отделите логику, которая будет находиться внутри вашего цикла loop-process-sleep, тогда вы сможете легко переключаться между ними - даже в одном и том же EXE-файле.
Я сделал это. Мы могли бы вызвать:
ourservice.exe -console
, и он просто запустится. Или
ourservice.exe -install
, и он будет установлен как служба:)
Я бы пошел по расписанию в 99% случаев. Если вам нужно все время запускать, прослушивать порты, смотреть папку (возможно - можно делать каждые 10 секунд без проблем), а затем делать это в службе. Если все, что вы делаете, это просыпаетесь, выполняете некоторую обработку (или нет), а затем возвращаетесь в спящий режим: используйте планировщик. Это проще, чище (управление памятью, особенно если вы используете COM-объекты, и действительно, если вы используете MAPI), а также варианты (еженедельно,
Если это действительно "периодически", то я бы пошел с запланированной задачей. Они могут быть настроены для работы на любой желаемой частоте.
Сервисы (по моему опыту) больше подходят для программ, которые должны реагировать на практически случайные события, такие как файлы, поступающие через FTP, или те, которые должны отслеживать состояние файловая система или база данных.
В качестве альтернативы, посмотрите quartz.net , если вы хотите, чтобы что-то запускалось периодически. Это предварительно созданная среда, которая позволяет планировать задачи и экономит ваше время на написании служебной части.
Избегайте службы, если только вы не должны ее использовать.
Это процесс - что означает, что он работает все время . Ненадлежащее использование системных ресурсов - плохая практика.
Лично я нахожу оскорбительным то, что другие люди выполняют свои процессы 24/7 на МОЕМ компьютере, когда это совершенно не нужно. Это МОЯ работа, которую они используют. Я отключаю все ненужные фоновые службы.
Это зависит от того, что вы имеете в виду периодически? Каждую секунду, каждую минуту, каждый час, каждый день?
Я бы сказал, что чем чаще выполняется задача, тем больше предпочтение отдается службе Windows.
«Зависит», но я обычно предпочитаю запланированные задания, для простоты:
Если это более или менее одно, и то, что вы будете устанавливать и контролировать самостоятельно, вероятно, хорошей идеей будет запланированное задание.
Что-то, что должно выглядеть как готовый продукт, а клиент должен установить себя, я бы пошел с Служба Windows.
И расписание также является проблемой. Минимальное расписание для запланированного задания составляет одну минуту. Что-нибудь ниже этого, вам либо нужно использовать службу Windows, либо встроить цикл в вашу работу.
Я думаю, это также будет зависеть от того, можете ли вы оставить компьютер авторизованным или нет. Я обнаружил, что запланированная задача Windows не может быть запущена, если человек, установивший задачу, не вошел в систему. Если компьютер не может оставаться в системе, программа должна быть запущена как служба вместо запланированной задачи.
Я думаю, что служба может быть полезна, если вы хотите использовать WCF или .NET Remoting и чтобы клиентские приложения взаимодействовали с какой-либо службой хоста; в противном случае я согласен с тем, что запланированная задача предпочтительнее службы, если более сложная служба не добавляет ничего нового.
И @Tom, его заявление о необходимости оставаться подключенным к компьютеру для выполнения запланированной задачи является ложным. Я только что проверил себя и подтвердил, что задача расписания Windows по-прежнему будет выполняться, даже если вы не вошли в систему (если, конечно, вы не выберете вариант, при котором задача запускается только при входе в систему).