public ArrayList<ArrayList<String>> select(String table, String columns, String where, String args) throws SQLiteException {
		String query = "SELECT " + columns + " FROM " + table;
		if (where.trim().length() > 0) {
			query += " WHERE " + where;
		}
		
		SQLiteStatement st = _db.prepare(query);
		String[] parameters;
		
		if (null != args && !args.isEmpty()) {
			parameters = args.split(_delimiter);
			for (int i = 0; i < parameters.length; i++) {
				st.bind(i + 1, parameters[i]);
			}
		}
		
		ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
		try {
			int columnsCount = st.columnCount();
			while (st.step()) {
				ArrayList<String> row = new ArrayList<String>();
				for (int i = 0; i < columnsCount; i++) {
					int type = st.columnType(i);
					
					switch (type) {
					case SQLiteConstants.SQLITE_INTEGER:
						row.add(String.valueOf(st.columnInt(i)));
						break;
						
					case SQLiteConstants.SQLITE_TEXT:
						row.add(st.columnString(i));
						break;
						
					default:
						break;
					}
				}
				list.add(row);
			}
		} catch (Exception e) {
			System.err.println(e.getMessage());
		} finally {
			st.dispose();
		}
		
		return list;
	}