PreparedStatement не предоставляет никакого хорошего способа работы с предложением SQL IN. Per http://www.javaranch.com/journal/2005/Journal200510.jsp#a2 «Вы не можете заменить вещи, которые должны стать частью инструкции SQL. Это необходимо, потому что если сам SQL может измениться, драйвер не может предварительно скомпилировать оператор, а также имеет хороший побочный эффект предотвращения атак SQL-инъекций ». В итоге я использовал следующий подход:
String query = "SELECT my_column FROM my_table where search_column IN ($searchColumns)";
query = query.replace("$searchColumns", "'A', 'B', 'C'");
Statement stmt = connection.createStatement();
boolean hasResults = stmt.execute(query);
do {
if (hasResults)
return stmt.getResultSet();
hasResults = stmt.getMoreResults();
} while (hasResults || stmt.getUpdateCount() != -1);
Это зависит от того, что вы имеете в виду. Вы хотите, чтобы символы табуляции в вашем файле отображались шириной 4 пробела, или под "табуляцией" вы на самом деле имеете в виду отступ , создаваемый нажатием клавиши табуляции, что приведет к файл, буквально содержащий (до) 4 символа пробела для каждой вводимой вами «табуляции»?
В зависимости от вашего ответа, один из следующих наборов настройки должны работать для вас:
Для символов табуляции, которые появляются через 4 пробела :
установите tabstop = 4
Если вы используете фактический символ табуляции в исходном коде, вам, вероятно, также понадобятся эти настройки (на самом деле это значения по умолчанию, но вы можете установить их в целях защиты):
set softtabstop = 0 noexpandtab
Наконец, если вы хотите, чтобы отступ соответствовал одной табуляции, вы также должны использовать:
set shiftwidth = 4
Для отступов, состоящих из 4 пробелов , но вводимых с помощью клавиши табуляции:
set tabstop = 8 softtabstop = 0 expandtab shiftwidth = 4 smarttab
Чтобы сделать вышеуказанные настройки постоянными, добавьте these lines to your vimrc.
In case you need to make adjustments, or would simply like to understand what these options all mean, here's a breakdown of what each option means:
tabstop
The width of a hard tabstop measured in "spaces" -- effectively the (maximum) width of an actual tab character.
shiftwidth
The size of an "indent". It's also measured in spaces, so if your code base indents with tab characters then you want
shiftwidth
to equal the number of tab characters timestabstop
. This is also used by things like the=
,>
and<
commands.
softtabstop
Setting this to a non-zero value other than
tabstop
will make the tab key (in insert mode) вставьте комбинацию пробелов (и, возможно, табуляции), чтобы имитировать позиции табуляции с этой шириной.
expandtab
Включение этого параметра заставит клавишу табуляции (в режиме вставки) вставлять пробелы вместо символы табуляции. Это также влияет на поведение команды
retab
.
smarttab
Включение этого параметра заставит клавишу табуляции (в режиме вставки) вставлять пробелы или табуляции в перейти к следующему отступу следующей позиции табуляции, когда курсор находится в начале строки (т.е. пробелами являются только предшествующие символы).
Для получения дополнительной информации по любому из них см. : help ' optionname '
в vim (например, : help 'tabstop'
)
Чтобы определить это на постоянной основе для текущего пользователя, создайте (или отредактируйте) файл .vimrc
:
$ vim ~/.vimrc
Затем вставьте приведенную ниже конфигурацию в файл . После перезапуска vim настройки вкладки будут применены.
set tabstop=4 " The width of a TAB is set to 4.
" Still it is a \t. It is just that
" Vim will interpret it to be having
" a width of 4.
set shiftwidth=4 " Indents will have a width of 4
set softtabstop=4 " Sets the number of columns for a TAB
set expandtab " Expand TABs to spaces
или сокращение для vim modeline:
vim :set ts=4 sw=4 sts=4 et :