/* * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.traccar.database; import org.json.JSONArray; import org.json.JSONObject; import java.sql.SQLException; import java.sql.ResultSet; import java.sql.ResultSetMetaData; public class ResultSetConverter { public static JSONArray convert(ResultSet rs) throws SQLException { JSONArray json = new JSONArray(); ResultSetMetaData rsmd = rs.getMetaData(); while (rs.next()) { int numColumns = rsmd.getColumnCount(); JSONObject obj = new JSONObject(); for (int i = 1; i <= numColumns; i++) { String columnName = rsmd.getColumnName(i).toLowerCase(); switch (rsmd.getColumnType(i)) { case java.sql.Types.BIGINT: obj.put(columnName, rs.getInt(columnName)); break; case java.sql.Types.BOOLEAN: obj.put(columnName, rs.getBoolean(columnName)); break; case java.sql.Types.DOUBLE: obj.put(columnName, rs.getDouble(columnName)); break; case java.sql.Types.FLOAT: obj.put(columnName, rs.getFloat(columnName)); break; case java.sql.Types.INTEGER: obj.put(columnName, rs.getInt(columnName)); break; case java.sql.Types.NVARCHAR: obj.put(columnName, rs.getNString(columnName)); break; case java.sql.Types.VARCHAR: obj.put(columnName, rs.getString(columnName)); break; case java.sql.Types.DATE: obj.put(columnName, rs.getDate(columnName)); break; case java.sql.Types.TIMESTAMP: obj.put(columnName, rs.getTimestamp(columnName)); break; default: obj.put(columnName, rs.getObject(columnName)); break; } } json.put(obj); } return json; } }