[英]Java can't read one of data ResultSet for if statement, getter returns "0"
我有“用戶”和“報告”表。 有 3 種類型的用戶,“position_no”為 0(管理員)、1(經理)、2(職員)。
關系設置正確。
我想要
我已經為此編寫了代碼。 我的問題是我無法檢測到哪個用戶登錄。 rs.getString("position_no");
給出錯誤: “未報告的異常 SQLException” ,如果我嘗試捕獲,仍然相同。
如果我手動將 new1 定義為 0、1 或 2,它可以正常工作,但不能解決我的問題。 例如我定義為 0,如果登錄用戶是 3,他會看到為 0。我不想要這個。
“查看報告”的 jframe 窗口:
用戶的 phpmyadmin 表:
用於報告的 phpmyadmin 表:
作為替代方法,我將 getter 和 setter 添加到 login_form.java 然后設置為當前用戶。
如果我在同一個文件 (loginform) 中打印 getter,它會顯示正確的用戶 position_no。 如果我設置為 2 並在其他文件(如 clerk.java)上打印 getter,它會打印“0”而不是 2。為什么?
public void fillReportJTable(JTable table){
loginf.setUserTip(0);
//System.out.println("Loginf value: " + loginf.getUserTip()); //getter shows 0 for all users
//int new1 = loginf.getUserTip(); //temporary non-working solution with getter setter
PreparedStatement st;
ResultSet rs = null;
String selectQuery = "SELECT * FROM `users` WHERE `position_no` = ?";
//String selectQuery = "SELECT * FROM `reports`";
//if(rs.next()){ //it gives error. works without it.
//this gets position no from db then goes to if statement
String tip = rs.getString("position_no");
//System.out.println("new1 degeri: " + new1);
int new1 = Integer.parseInt(tip);
if(new1==0){
selectQuery = "SELECT * FROM `reports`";
}
if(new1==1){
selectQuery = "SELECT * FROM `reports` WHERE `position_no` = 1";
}
if(new1==2){
selectQuery = "SELECT * FROM `reports` WHERE `position_no` = 2";
}
//}
try {
st= mcas.getConnection().prepareStatement(selectQuery);
rs= st.executeQuery();
DefaultTableModel tableModel = (DefaultTableModel)table.getModel();
Object[] row;
while(rs.next()){
row = new Object[5];
row[0] = rs.getInt(1); // productid
row[1] = rs.getString(2); //product name
row[2] = rs.getString(3); //report topic
row[3] = rs.getString(4); //report text
row[4] = rs.getString(5); //position_no
tableModel.addRow(row);
}
} catch (SQLException ex) {
Logger.getLogger(CLIENT.class.getName()).log(Level.SEVERE, null, ex);
}
}
這是 login_form.java 中的一些代碼:
String tip = rs.getString("position_no");
System.out.println(tip);
int new1 = Integer.parseInt(tip);
Login_Form loginf = new Login_Form(); //welcome yazisi icin
//int girisdegeri = new1;
loginf.setUserTip(new1); //reports icin user tip
System.out.println("Loginf degeri: " + loginf.getUserTip());
login_form 頂部:
public class Login_Form extends javax.swing.JFrame {
private String publicusername; //username get set almak icin lazim
private int publicusertip; //user tipi alma see reports icin
login_form 中的 getter 和 setter:
public int getUserTip() {
return publicusertip;
}
public void setUserTip(int newName) { // Usertip Setter
this.publicusertip = newName;
}
看起來您正在使用參數定義准備好的語句,但實際上並未設置該參數。 如果您不需要使用該參數,則只需將其用作您的第一個 sql 語句。
SELECT * FROM `users`
我還假設這里有一些釋義,因為看起來您實際上並沒有從當前或注釋的代碼中獲得結果集。 所以也許檢查你是否真的在執行語句,有或沒有參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.