Как я соединяюсь с .mdf (Файл Базы данных Microsoft SQL Server) в простом веб-проекте?

Ваша проблема заключается не в аннотации @Before, а в ошибочной установке атрибута в HttpServletRequest вместо заголовка. Атрибут! = Заголовок. Поэтому, конечно, этот параметр будет нулевым в вашем контроллере.

Заголовки в HttpServletRequest доступны только для чтения. Вам нужно будет обернуть запрос в HttpServletRequestWrapper и выполнить все виды работ для управления исходными и вашими собственными заголовками. Существует множество примеров, в том числе полный: https://wilddiary.com/adding-custom-headers-java-httpservletrequest/

В нем представлен MutableHttpServletRequest, расширяющий HttpServletRequestWrapper. Вы будете сохранять состояние ваших пользовательских заголовков и просто их с оригинальными. Вам придется переопределить getHeader и getHeaderNames!

Ваш код @Before будет выглядеть примерно так:

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
MutableHttpServletRequest wrappedRequest = new MutableHttpServletRequest(request);
request.putHeader("traceId", ServiceUtil.getTraceId());
return request;

Однако, чтобы получить немного функциональности (если вам не нужно делать это снова и снова). Для разового использования я бы просто использовал технику @Around.

Вся эта церемония добавит ценность карте!

10
задан animuson 13 August 2013 в 15:55
поделиться

4 ответа

Просто еще один - я всегда сохранял udl файл на своем рабочем столе для легкого создания и строки тестового соединения. Если Вы никогда не делали этого, прежде чем - создадут новый текстовый файл и назовут его к connection.udl (расширение является единственной важной частью). Откройте файл, запуститесь на вкладке Provider и проложите себе путь. После того как Вы довольны соединением, переименовывают файл, дающий его .txt расширение. Откройте файл и скопируйте строку - это относительно легко и позволяет Вам протестировать соединение перед использованием его.

3
ответ дан 3 December 2019 в 14:19
поделиться

Большим ресурсом, который я всегда имею в наличии, является connectionstrings.com. Действительно удобно для нахождения этих строк подключения, когда Вы не можете найти пример.

Особенно эта страница относилась к Вашей проблеме

Присоедините файл базы данных на подключении к локальному экземпляру SQL Server Express

Driver={SQL Native Client};Server=.\SQLExpress;AttachDbFilename=c:\asd\qwe\mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
20
ответ дан 3 December 2019 в 14:19
поделиться

Таким образом, вот ответ из MSDN:

Choos[e] "Добавляет Новый Источник данных" из Меню данных. [И следуйте за мастером соединения]

Очень легкий, за исключением того, что у меня нет Меню данных. Если у Вас нет Меню данных, сделайте следующее:

  • Нажмите на Tools>> Connect to Database...
  • Выберите "Файл Базы данных Microsoft SQL Server", берет Поставщик данных по умолчанию и нажимает "OK"
  • На следующем экране просмотрите в свой файл Базы данных, который будет в Вашей структуре папок Решения VS где-нибудь.

Протестируйте соединение. Это будет хорошо. Если Вы хотите добавить строку к web.config, нажать кнопку Advanced, и скопировать строку Источника данных (у основания диалогового окна) и вставить его в строку подключения в соответствующем месте в web.config файле. Необходимо будет добавить"AttachDbFilename"атрибут и значение. Пример:

Необработанный текст от панели Advanced:

Data Source=.\SQLEXPRESS;Integrated Security=True;Connect Timeout=30;User Instance=True

Фактическая запись в web.config:

<add name="SomeDataBase" connectionString="Data Source=.\SQLEXPRESS; 
AttachDbFilename=C:\Development\blahBlah\App_Data\SomeDataFile.mdf;
Integrated Security=True; Connect Timeout=30; User Instance=True" />
9
ответ дан 3 December 2019 в 14:19
поделиться
<add name="Your Database" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Expanse.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/>
3
ответ дан 3 December 2019 в 14:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: