Проблема заключается в синтаксисе «generic» в методах setInt и setString. - Конечно, могут быть и другие проблемы, но позвольте мне рассказать вам, что я нашел.my дает пустой результат. Мой JTable пуст. Это не должно быть
Ниже представлен мой стол в mySql, который я пытаюсь выполнить с помощью java.
Id | CashFlowSensitive | Sp1
-----------------------------------
37 | 1 | Hello
1000 | 0 | Hello
1401 | 0 | number3
1500 | 0 | number4
1504 | 1 | Hello
Если я код, как «дать мне все строки, где CashFlowSensitive = 1 и Sp1 =„Hello“, то мой код работает. Это дает мне первую и последнюю строку, поскольку они точно соответствуют критериям фильтрации.
Теперь представьте, что я изменяю последнюю строку в таблице, заменяя запись Hello
на number5
. Таблица будет выглядеть следующим образом
Id | CashFlowSensitive | Sp1
-----------------------------------
37 | 1 | Hello
1000 | 0 | Hello
1401 | 0 | number3
1500 | 0 | number4
1504 | 1 | number5
Наконец я запускаю мой запрос с просьбой дать мне все строки, где «CashFlowSensitive» = 1. я должен получить 37 и 1504. К сожалению, это дает пустой Resultset. Мой JTable пуст. В этом неисправного примере я:
public void searchStringTest(DefaultTableModel model, Database db, int CashFlowSensitive, String Sp1)
{
int first = -77;
String second = "-55";
String queryTest = " select * from helm.activitiesextended where CashFlowSensitive = ? and Sp1 = ? ";
try
{
java.sql.PreparedStatement selectStmt = CON.prepareStatement(queryTest);
if (first == -77) {
((PreparedStatement) selectStmt).setInt(1, 1);
} else {
((PreparedStatement) selectStmt).setInt(1, '%' + CashFlowSensitive + '%');
}
if (second == "-77") {
((PreparedStatement) selectStmt).setString(2, "Hello");
} else {
((PreparedStatement) selectStmt).setString(2, "%" + Sp1 + "%");
}
ResultSet rsTest = selectStmt.executeQuery();
model.setRowCount(0);
while (rsTest.next())
{
Vector <Object> vector = new Vector<Object>();
for (int columnIndex = 1; columnIndex <=4; columnIndex ++)
{
vector.add(rsTest.getObject (columnIndex));// pick next column
}
data.add(vector);
model.addRow(vector);
}
У меня есть SearchString объявлен (INT CFS, INT ToBeMonitored, String Sp1, String Sp2, String Sp3 и добавление 7 PARAMATERS) Я определила мою строку запроса : выберите * из таблицы где CFS =? и ToBeMonitored =? и Sp1 =? и Sp2 =? и Sp3 =? и т.д., перечисляя десять параметров. Теперь, при любом запуске этого запроса, я активирую только max 4 параметра, например, я хочу отфильтровать 2 параметра: CFS и Sp1, остальные параметры должны быть нейтральными для процесса фильтрации, я называю это «нейтральным». При этом я настраивал подготовленные операторы ((PreparedStatement) selectStmt) .setInt (1, 1); // фильтр на этом ((PreparedStatement) selectStmt) .setInt (2, '%' + ToBeMonitored + '% «); // принимаем любое значение ((PreparedStatement) selectStmt) .setString (3, «Hello»); // фильтровать на этом ((PreparedStatement) selectStmt) .setString (4, "%" + Sp2 + "%") ; ((PreparedStatement) selectStmt) .setString (5, "%" + Sp3 + "%"); Как вы можете видеть, я выделяю свой sql для оценки параметров 1 и 3, игнорируя другие параметры, что делает их нейтральными в процессе фильтрации. Проблема: никаких результатов не создано несмотря на достоверные данные.
Ваш ответ немного не в том вопросе, который я поднял. Я хочу, чтобы вы соблюдали тот факт, что одна и та же строка запроса должна сохраняться снова и снова, независимо от того, какие параметры я хочу фильтровать при каждом отдельном прогоне. Например, если я только «включил» флаг CashFlowSensitive, тогда этот конкретный параметр должен быть активным при запуске запроса. Другие параметры должны вести себя нейтрально для процесса фильтрации. В других случаях я могу выбрать активировать поле Sp1 (поле CHAR), тогда другие поля должны лежать бездействующими. В других случаях я могу выбрать комбинацию из нескольких полей, те должны быть активными, а не выбранные поля должны быть нейтральными. Позвольте мне уменьшить объем вашего задания. 1) скажите мне, как запросить поле CHAR с использованием параметров привязки, где поле должно быть нейтральным в процессе фильтрации, другими словами, любой контент должен быть принят. 2) Можете ли вы также рассказать мне, как я могу проверить строку запроса, которую генерирует программное обеспечение