Вы никогда не должны распространять библиотеку .jar, которая также является исполняемым файлом. Лучше всего, чтобы это была либо просто библиотека, предлагающая функциональные возможности для запуска вашего сервера (чтобы приложение-потребитель могло запускать сервер), либо автономный исполняемый файл, который не предназначен для импорта.
Я думаю, что лучше всего просто разделить .jars или позволить потребляющему приложению запустить сервер.
Используйте связанное использование запроса
$sth = $dbh->prepare("insert into tbl_name(col_one,col_two) values(?,?)");
$sth->execute($val1, $val2);
При использовании связанных переменных всего оставляют для Вас.
Обновление: Измененный мой пример для соответствия примеру, отредактированному в вопрос.
Обновление: Я не знаю, почему Adam удалил свой ответ, но если по некоторым причинам Вы не можете использовать связанные переменные (иначе "заполнители"), можно также использовать $dbh->quote($var)
на переменной. Например:
$sql = sprintf "SELECT foo FROM bar WHERE baz = %s",
$dbh->quote(q("Don't"));
Используйте quote()
метод. Это разумно обработает заключение в кавычки на Вас. Пример из документов:
$sql = sprintf "SELECT foo FROM bar WHERE baz = %s",
$dbh->quote("Don't");
Немного измененный, чтобы иметь оба типа кавычек:
$sql = sprintf "SELECT foo FROM bar WHERE baz = %s",
$dbh->quote(q("Don't"));
Один маленький протест на связанных заполнителях, я создаю довольно большой загружающий базу данных сценарий, который первоначально использовал связанных заполнителей в более старой версии Perl/DBI и нашел то, что, кажется, утечка памяти в реализации заполнителя, поэтому если Вы смотрите на использование их в персистентном процессе/демоне, или в контексте большого объема можно хотеть удостовериться, что размер процесса не становится проблемой. При переключении на создание строк запроса с помощью кавычки () метод устранил проблему для меня.