连接到SQLSEVER时,无法在Java中运行Restfull Web服务



我正在尝试调用从我的sqlsever数据库返回JSON格式

的Web服务

这是我的代码以从SQLSever获取数据并将其转换为JSON。在这里,函数getAllDataJson()返回结果的字符串值。当我称其为

时,这很好
SqlDatabase db = new SqlDatabase();
System.out.println(db.getAllDataJson);

,但是当我从Web服务中调用它时它不起作用(此WebService配置也可以,我使用此WebService返回JSON字符串,然后才能正常运行)

如果我将两者结合在一起,则在函数getAllData()中显示错误(以下返回代码)在线:

rs = stmt.executeQuery("select * from persons");

它正在显示NullPoInterException它显示此错误

如果将其作为Java应用程序运行,则不会存在同样的错误,只有在我在WebService上运行

时才在那里。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
public class SqlDatabase {
    private static final String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
        "databaseName=FIRST;integratedSecurity=true;";
    Connection con = null;
    Statement stmt = null;
private void connectToDb(){
    try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        con = DriverManager.getConnection(connectionUrl);           
        stmt = con.createStatement();
    } catch (SQLException e) {
        System.out.println("error occured at Database Connection");
    } catch (ClassNotFoundException e) {
        System.out.println("Class not found");
    }
}

void closeDb(){
    try{
        if(con != null){con.close();}
        if(stmt!=null){stmt.close();}
    }catch(SQLException e){
        System.out.println("error occured while closing Database Connection");
    }
}

public ResultSet getAllData(){
    ResultSet rs = null;
    connectToDb();
    try {
        rs = stmt.executeQuery("select * from persons");
    } catch (SQLException e) {
        System.out.println("error occured while getting data");
    }
    return rs;  
}
public String getAllDataJson() throws JSONException{
    ResultSet rs = getAllData();
    if(rs == null){return null;}
    JSONArray jArray = new JSONArray();
    JSONObject json = null;
    //data to json
    try {
        while(rs.next()){
            for(int i = 1;i<=rs.getMetaData().getColumnCount();i++){
                json = new JSONObject();                    
                json.put(rs.getMetaData().getColumnName(i), rs.getString(i));
            }
            jArray.put(json);
        }
    } catch (SQLException e) {
        System.out.println("near Json");
    }
    return jArray.toString();
}

}

请参阅DB主机url dbc:sqlserver://localhost:1433

它说localhost。意味着它将始终检查安装在执行的机器中的DB服务器。

检查DB服务器和Web服务器已安装在同一台计算机中。如果没有,则可以使用IP地址,而是Local主持人。用运行的DB服务器的IP替换Localhost。

假设DB服务器正在运行的系统的IP为182.10.10.45,然后

dbc:sqlserver://182.10.10.45:1433

相关内容

  • 没有找到相关文章

最新更新