Позорное 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
Ну, я могу помочь вам с некоторыми из кода .....
Я использовал это недавно в проекте ac # для удаления с адресов электронной почты:
static string RemoveDiacritics(string stIn)
{
string stFormD = (stIn ?? string.Empty).Normalize(NormalizationForm.FormD);
StringBuilder sb = new StringBuilder();
for (int ich = 0; ich < stFormD.Length; ich++)
{
UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[ich]);
if (uc != UnicodeCategory.NonSpacingMark)
{
sb.Append(stFormD[ich]);
}
}
return (sb.ToString().Normalize(NormalizationForm.FormC));
}
I думаю, теперь я могу сказать, что «расширение в сценарий PowerShell / форма оставлена читателю» .... надеюсь, что это поможет ....
Другое решение ... быстро «повторно использовать» ваш C # в PowerShell (коды кода на C # теряются где-то в сети).
Add-Type -TypeDefinition @"
using System.Text;
using System.Globalization;
public class Utils
{
public static string RemoveDiacritics(string stIn)
{
string stFormD = stIn.Normalize(NormalizationForm.FormD);
StringBuilder sb = new StringBuilder();
for (int ich = 0; ich < stFormD.Length; ich++)
{
UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[ich]);
if (uc != UnicodeCategory.NonSpacingMark)
{
sb.Append(stFormD[ich]);
}
}
return (sb.ToString().Normalize(NormalizationForm.FormC));
}
}
"@ | Out-Null
[Utils]::RemoveDiacritics("ABC-abc-ČŠŽ-čšž")
PS> [Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding(1251).GetBytes("Ramón"))
Ramon
PS>
Æ×Þ°±ß…
. Настоящий староанглийский пример : возвращает Fore ??re m?r?e?
, если применяется к Fore ðære mærðe…
– JosefZ
20 March 2016 в 17:03
С помощью приведенных выше примеров я использую этот «однострочный:» в трубе (проверен только в Win10):
"öüóőúéáűí".Normalize("FormD") -replace '\p{M}', ''
Результат:
ouooueeui
Другой перевод PowerShell для @ip для не C # кодеров; o)
function Remove-Diacritics
{
param ([String]$sToModify = [String]::Empty)
foreach ($s in $sToModify) # Param may be a string or a list of strings
{
if ($sToModify -eq $null) {return [string]::Empty}
$sNormalized = $sToModify.Normalize("FormD")
foreach ($c in [Char[]]$sNormalized)
{
$uCategory = [System.Globalization.CharUnicodeInfo]::GetUnicodeCategory($c)
if ($uCategory -ne "NonSpacingMark") {$res += $c}
}
return $res
}
}
Clear-Host
$name = "Un été de Raphaël"
Write-Host (Remove-Diacritics $name )
$test = ("äâûê", "éèà", "ùçä")
$test | % {Remove-Diacritics $_}
Remove-Diacritics $test
Вместо создания строковых построек и циклических символов вы можете просто использовать -replace в строке NFD для удаления комбинированных меток:
function Remove-Diacritics {
param ([String]$src = [String]::Empty)
$normalized = $src.Normalize( [Text.NormalizationForm]::FormD )
($normalized -replace '\p{M}', '')
}
В соответствии с ответом ip. вот версия Powershell.
function Remove-Diacritics {
param ([String]$src = [String]::Empty)
$normalized = $src.Normalize( [Text.NormalizationForm]::FormD )
$sb = new-object Text.StringBuilder
$normalized.ToCharArray() | % {
if( [Globalization.CharUnicodeInfo]::GetUnicodeCategory($_) -ne [Globalization.UnicodeCategory]::NonSpacingMark) {
[void]$sb.Append($_)
}
}
$sb.ToString()
}
# Test data
@("Rhône", "Basíl", "Åbo", "", "Gräsäntörmä") | % { Remove-Diacritics $_ }
Выход:
Rhone
Basil
Abo
Grasantorma