Я пытаюсь вызвать веб-сервис, который возвращает данные из моей базы данных sqlsever в формате JSONне удалось запустить restfull вебсервис в Java при подключении к sqlsever
Это мой код, чтобы получить данные из sqlsever и преобразовать его в формат JSON. Здесь функция getAllDataJson()
возвращает строковое значение результата. Это работает хорошо, когда я называю его для отображения в качестве
SqlDatabase db = new SqlDatabase();
System.out.println(db.getAllDataJson);
, но он не работает, когда я называю его с веб-сервиса (Эта конфигурация вебсервис также хорошо, я использовал этот WebService вернуть JSon строку до того, как его работал отлично)
если я объединить их и он показывает ошибку в функции getAllData()
(которая находится в поле ниже код возврата) на линии:
rs = stmt.executeQuery("select * from persons");
он показывает ню llPointerException It is showing this error
Та же ошибка не существует, если запустить его как приложение 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();
}
}
Вы глотания исключения, и попытка в любом случае использовать соединение. В минимальном журнале регистрируется «SQLException» (или используйте 'e.printStackTrace()'), чтобы мы знали, что пошло не так. –