Позорное java.sql.SQLException: не найдено подходящего драйвера
blockquote>Это исключение может иметь в основном две причины:
1. Драйвер JDBC не загружен
Вам необходимо убедиться, что драйвер JDBC помещен в собственную папку
/lib
сервера.[/g15]
Или, если на самом деле вы не используете источник данных пула соединений, управляемый сервером, а вручную запускаете
DriverManager#getConnection()
в WAR , тогда вам нужно поместить драйвер JDBC в WAR/WEB-INF/lib
и выполнить ..Class.forName("com.example.jdbc.Driver");
.. в вашем коде перед первый
DriverManager#getConnection()
вызов, посредством которого вы делаете убедитесь, что вы не проглатываете / игнорируете любыеClassNotFoundException
, которые могут быть выброшены им, и продолжайте поток кода, как будто ничего исключительного не произошло. См. Также Где я должен разместить драйвер JDBC для пула соединений Tomcat?2. Или URL-адрес JDBC находится в неправильном синтаксисе
Вам нужно убедиться, что URL JDBC соответствует документации драйвера JDBC и помните, что он обычно чувствителен к регистру. Когда URL-адрес JDBC не возвращает
true
дляDriver#acceptsURL()
для любого из загруженных драйверов, тогда вы также получите именно это исключение.В случае PostgreSQL это документально здесь .
С JDBC база данных представлена URL-адресом (Uniform Resource Locator). С PostgreSQL ™ это принимает одну из следующих форм:
blockquote>
jdbc:postgresql:database
jdbc:postgresql://host/database
jdbc:postgresql://host:port/database
В случае с MySQL это здесь .
Общий формат URL-адреса JDBC для подключения к серверу MySQL следующим образом: элементы в квадратных скобках (
[ ]
) являются необязательными:blockquote>
jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]
В случае Oracle это документировано здесь .
Существует 2 синтаксиса URL, старый синтаксис, который будет работать только с SID и новый с именем службы Oracle.
Старый синтаксис
jdbc:oracle:thin:@[HOST][:PORT]:SID
Новый синтаксис
blockquote>jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE
См. также:
- Где я должен разместить драйвер JDBC для Пул соединений Tomcat
- Как установить драйвер JDBC в веб-проект Eclipse без обращения к java.lang.ClassNotFoundexception
- Как следует Я подключаюсь к базе данных JDBC / источнику данных в приложении на основе сервлета?
- В чем разница между "Class.forName ()" и "Class.forName (). newInstance ()"?
- Подключить Java к базе данных MySQL
Для всех "Linq-to-SQL мертв": сам Скотт Гатри на TechEd Europe четко сказал, что Linq-to-SQL ПОЛНОСТЬЮ ПОДДЕРЖИВАЕТСЯ в . NET 4, а Дэмиен Гард опубликовал запись в блоге о том, какие изменения и улучшения были сделаны для Linq-to-SQL в .NET 4.
Цитируя Марка Твена: "Сообщения о моей смерти были сильно преувеличены".......
LINQ к инструментам SQL в Visual Studio
LINQ к SQL был первой объектно-реляционной технологией отображения, выпущенной Microsoft. Это работает хорошо в основных сценариях и продолжает поддерживаться в Visual Studio, но это больше не находится в процессе активного развития. Использование LINQ к SQL при поддержании унаследованного приложения это уже использует его, или в простых приложениях, которые используют SQL Server и не требуют отображения мультитаблицы. В целом новые приложения должны использовать Платформу Объекта, когда объектно-реляционный слой картопостроителя требуется.
Думаю, их слияние неизбежно. EF - это действительно реализация LINQ на уровне предприятия над объектами db. linq2sql был, по сути, доказательством концепции (и многого другого), которая на самом деле выросла, но подпитывала многие идеи, которые мы сейчас видим в EF. в конце дня уровень DAL (nhibernate, EF, l2s, subsonic и т. д.) должен быть довольно далеко вниз по цепочке, чтобы свести на нет любые различия в клиентском коде BO, который реализует службу LINQ - горячая замена будет концом игра через DI.
Нет, это не так. Команда все еще работает над его улучшением.
Обязательно посмотрите эту статью, опубликованную на InfoQ.com - она действительно интересная. Ее вывод: "[В долгосрочной перспективе LINQ to SQL и LINQ to Entities сольются. В то же время, разработка LINQ to SQL не будет полностью прекращена."
.Последний раз я проверял, этот самый сайт использует (или использовал) Linq To SQL. Джоэл Спольски упоминает об этом в своем GoogleTechTalk: http://www.youtube.com/watch?v=NWHfY_lvKIQ .
Говоря о программном обеспечении, «мертвый» является образным модификатором (программное обеспечение не умирает в буквальном, биологическом смысле), поэтому эти дебаты могут продолжаться до тех пор, пока вовлеченные стороны отказываются определять в каком-либо буквальном смысле, что оно средство для Linq To Die. Или для краткости LTD. Следовательно, с этого момента дебаты о LTD затянулись на два года. Все из-за небольшой языковой двусмысленности.
Те, кто говорят, что «L2S мертв», обычно имеют в виду тот факт, что L2S не получит слишком много (если таковые будут) новых функций. Обновления Linq (например, обновления, упомянутые в сообщении Damien Guard ), скорее всего, будут ограничиваться обновлениями производительности, удобства использования и стабильности. Конечно, некоторые разработчики могут на самом деле возразить, что это хорошо (вероятно, те же разработчики, которые немного недовольны новым динамическим типом ).
Те, кто говорит, что «L2S не мертв», обычно имеют в виду тот факт, что L2S не будет полностью отключен от .Net (по крайней мере, в ближайшее время). Подумайте: ADO. Он может потерять часть своей популярности среди практикующих разработчиков (и это может быть невысказанное желание тех хитрых ребят из Microsoft), но это не значит, что вы не сможете использовать L2S, если захотите. Это просто означает, что Microsoft не пытается соблазнить массы этим.
Когда я начинаю проект, я думаю, это здорово, что у меня есть выбор между EF и L2S.Как указывает Билл Вагнер , для обоих есть время и место.