Я пишу Webapp, где есть данные, которые нужно вытащить из базы данных и отобразить в текстовых полях. Все работает нормально. Но мне нужно отобразить значение как No Data Available
в этих текстовых полях if(!rs.next())
, в настоящее время я пытаюсь использовать приведенный ниже код.Заполните текстовые поля нулевыми значениями
package org.DAO;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.bean.UserBean;
import org.code.general.DBConnection;
import org.code.general.GetTheUserDetails;
public class GetDataDAO {
DBConnection dbConnection = new DBConnection();
GetTheUserDetails getTheUserDetails = new GetTheUserDetails();
public List<UserBean> list(String systemUserName) throws Exception {
List<UserBean> userBeans = new ArrayList<UserBean>();
try {
Connection conn = dbConnection.getConn();
Statement stmt = dbConnection.getStmt();
ResultSet rs = dbConnection.getRs();
String excelPath = dbConnection.getExcelPath();
String queryString = null;
dbConnection.createClassForNameForExcel();
conn = DriverManager.getConnection(
"jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=" + excelPath + "; READONLY=FALSE;");
System.out.println("Connecting to database…");
System.out.println("Oracle JDBC Driver Registered!");
if (conn != null) {
System.out.println("You made it, take control your database now!");
} else {
System.out.println("Failed to make connection!");
}
stmt = conn.createStatement();
queryString = "Select * from [" + dbConnection.getSheetPath()
+ "$] where STATE IS NULL and [Case Owner] = '"
+ getTheUserDetails.getUserNameDetails(systemUserName) + "'";
System.out.println("Query is " + queryString);
rs = stmt.executeQuery(queryString);
ResultSetMetaData rsmd = rs.getMetaData();
System.out.println("bno of cols are " + rsmd.getColumnCount());
while (rs.next()) {
if (rs.next()) {
UserBean userBean = new UserBean();
userBean.setCaseNumber(rs.getString(1));
userBean.setCaseOwner(rs.getString(2));
userBean.setStatus(rs.getString(4));
userBean.setIssue(rs.getString(5));
userBean.setReason(rs.getString(6));
userBean.setDateOpened(rs.getString(7));
userBean.setAge(rs.getInt(8));
userBeans.add(userBean);
} else {
UserBean userBean = new UserBean();
userBean.setCaseNumber("None");
userBean.setCaseOwner("None");
userBean.setStatus("None");
userBean.setIssue("None");
userBean.setReason("None");
userBean.setDateOpened("None");
userBean.setAge(Integer.parseInt("None"));
userBeans.add(userBean);
}
}
rs.close();
conn.commit();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return userBeans;
}
}
Согласно моему пониманию, я написал пробуя ниже алгоритм,
if(rs.next)
then create the bean and add the values from database,
else
create the bean and add the values as None
пожалуйста, дайте мне знать, где я буду неправильно и как я могу это исправить.
Благодаря
Я не думаю, что это отличная идея дважды вызвать 'rs.next()'. Это приведет к тому, что не будет показано первое значение, потому что вы его пропустили. И, во-вторых, если база данных не содержит никаких значений, то она не должна указывать на новую строку. Вы говорите, что значения равны нулю, но строка присутствует? Я просто боюсь, что строки будут пустыми, а затем логика внутри цикла не сработает. –
Кроме того, если 'rs.next()' false, это означает, что вы не можете создать пустой UsesrBean. Вам придется делать это за пределами цикла while. –
Привет @JernejK, я могу удалить 'while (rs.next()) 'и сохранить' if-else'? – user3872094