判断jsonarray对象是否为空

百度的三种解决办法都不是最根本的东西,没有用

问题的出发点是我要从数据库读数据写成jsonarray数组(登录验证),进而引发问题如何判断jsonarray数组为空

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import util.ConnectDatabase;


public class GetInforFormDatabase {
    ConnectDatabase db = new ConnectDatabase();
    Connection con =  db.getConnection();
    
    public JSONArray search(String sql) {
        JSONArray array = null;
        try {
            PreparedStatement pst = null;
            pst = con.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();
 
            ResultSetMetaData metaData =  rs.getMetaData();  
            int columnCount= metaData.getColumnCount();   
            if (!rs.wasNull()){   ////这有结果集不为空的时候我才实例化array数组
                array = new JSONArray();
                while(rs.next()){
                        
                     JSONObject jsonObj = new JSONObject();       
                     for(int i = 1; i <= columnCount;i++)  
                      {  
                       String columnName = metaData.getColumnLabel(i);  
                       String value =rs.getString(columnName);  
                       jsonObj.put(columnName, value);  
                      }  
           
                     array.add(jsonObj);
                     System.out.println(array);
                    }
                    con.close();
    
            }
        } catch (Exception e) {

            e.printStackTrace();
        }
        
        return array;
    }
      

}

loginAction.java文件

package action;

import com.opensymphony.xwork2.ActionSupport;

import dao.GetInforFormDatabase;
import net.sf.json.JSONArray;

public class LoginAction extends ActionSupport {

    private static final long serialVersionUID = 1L;

    ////struts2,当form提交数据给action时,调用里面的get,set方法,直接给这些成员变量赋值
    private String username;
    private String password;
    
    String get_username = "";
    String get_password = "";
    
    public String getUsername() {  
        return username;  
    }
    public String getPassword() {  
        return password;  
    }  
    ////方法名必须为这样子,username为input的name名字,且第一个字母为大写
    ////只有get,set都有才会自动给你复制到成员变量
    public void setUsername(String username) {  
        this.username = username;  
    }
    
    public void setPassword(String password) {  
        this.password = password;  
    }
    
    public String execute(){
        //this.addFieldError("name","name is error");
        ///查库操作
        String sql = "select S_id,S_password from S where S_id='"+username+"'";
        GetInforFormDatabase gifd = new GetInforFormDatabase();
        ////获取Json数据
        JSONArray ja = gifd.search(sql);
        if(ja.equals(null)) {
            /////之所以这里的这一行可以用,是因为我在读库的操作中没有new一个jsonarray对象,所以为null

///如果没有我上面那个文件的写法,这个就是不可以判断的
            get_username = (String) ja.getJSONObject(0).get("S_id");
            get_password = (String) ja.getJSONObject(0).get("S_password");
            ////验证读取到的数据
            System.out.println(get_username);
            System.out.println(get_password);
            ///判断密码和用户是否匹配
            if(username.equals(get_username) && password.equals(get_password))
                return "success";
            else return "error";
        }else {
            System.out.println("为空");
            return "error";
            
            
        }
        
        
    }
    
}

猜你喜欢

转载自blog.csdn.net/monkey_sister/article/details/83210429
今日推荐