Тахир был почти прав в своем ответе, правильный SQL-запрос должен быть
String sql = "SELECT * FROM user where userName LIKE ?";
, а затем вам нужно добавить %
подстановочные знаки в параметр «вручную», т.е.
String queryString = "%" + userSearch + "%";
ps.setString(1, queryString);
Я ломал голову над это точно так же некоторое время назад.
Единственный способ, которым я мог заставить это работать (вроде), - это создать подкласс NSApplication и переопределить -sendEvent. В -sendEvent вы сначала вызываете реализацию super, а затем делаете что-то вроде этого:
id *modalWindow = [self modalWindow];
if (modalWindow && [modalWindow level] != MY_DESIRED_MODAL_WINDOW_LEVEL)
[modalWindow setLevel: MY_DESIRED_MODAL_WINDOW_LEVEL];
Кроме того, даже это не было работать безупречно - при переключении приложений - вы никогда не захотите делать это в любом случае, потому что это явный, грубый взлом.
Так что да, к сожалению, вам лучше написать свою собственную версию NSAlert. Если вам действительно небезразлична эта возможность, я бы оповестил об этом. Довольно странно, что [[окно оповещения] setLevel: someLevel] не соблюдается NSApplication, и это пустая трата времени, чтобы пересобрать NSAlert со всеми его аккуратными небольшими функциями автоматической разметки, чтобы иметь возможность сделать это.
Я закончил тем, что отказался от NSAlert
, и вместо этого я загружаю бдительное NSWindow
из NIB.
Вот код, который отображает окно:
- (void)showAlert {
NSWindow *w = [self window];
[w makeFirstResponder:nil];
[w setLevel:NSFloatingWindowLevel];
[w center];
[w makeKeyAndOrderFront:self];
}
Это предназначена для того, чтобы заставить его действовать как предупреждение, за исключением того, что оно также плавает и не является модальным, поэтому пункты меню могут быть выбраны, пока оно включено.
Что-нибудь еще, что я должен был сделать?