我正在尝试调用从我的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