SQLite高级语句查询

目录

1、插入数据

2、删除数据

3、查询数据的个数

4、查询 5公里矩形范围内的病害信息的经纬度

5、查询并返回一个数据列表

6、更新表中某个字段的属性值


1、插入数据

/**
     * 保存图片
     *
     * @param db             数据库对象
     * @param imageId        图片ID  使用UUID
     * @param bitmap         位图
     * @param angle          图片的旋转角度
     * @param width          图片的宽度
     * @param height         图片的高度
     * @param dpiWidth       设备的分辨率宽度
     * @param dpiHeight      设备的分辨率高度
     * @param geoMap         地图提供者
     * @param longitude      经度
     * @param latitude       纬度
     * @param altitude       海拔
     * @param createdBy      创建者
     * @param creationDate   创建时间
     * @param lastUpdateBy   最近更新者
     * @param lastUpdateDate 最近更新时间
     * @param street         图片的街道信息
     * @param address        图片的详细地址信息
     */
    private static void insertImage(SQLiteDatabase db, String imageId, Bitmap bitmap,
                                    double angle, double width, double height, double dpiWidth,
                                    double dpiHeight, String geoMap, double longitude, double latitude,
                                    double altitude, int createdBy, long creationDate, int lastUpdateBy,
                                    long lastUpdateDate, String street, String address) {
        ContentValues contentValues = new ContentValues();
        contentValues.put(Constant.IMAGE_ID, imageId);
        contentValues.put(Constant.IMAGE, BitmapUtils.bitmapToBytes(bitmap));//图片转为二进制
        contentValues.put(Constant.ANGLE, angle);
        contentValues.put(Constant.WIDTH, width);
        contentValues.put(Constant.HEIGHT, height);
        contentValues.put(Constant.DPI_WIDTH, dpiWidth);
        contentValues.put(Constant.DPI_HEIGHT, dpiHeight);
        contentValues.put(Constant.GEO_MAP_INFO, geoMap);
        contentValues.put(Constant.LONGITUDE, longitude);
        contentValues.put(Constant.LATITUDE, latitude);
        contentValues.put(Constant.ALTITUDE, altitude);
        contentValues.put(Constant.CREATED_BY, createdBy);
        contentValues.put(Constant.CREATION_DATE, creationDate);
        contentValues.put(Constant.LAST_UPDATED_BY, lastUpdateBy);
        contentValues.put(Constant.LAST_UPDATED_DATE, lastUpdateDate);
        contentValues.put(Constant.STREET, street);
        contentValues.put(Constant.ADDRESS, address);
        contentValues.put(Constant.IS_UPLOADED, 0);
        contentValues.put(Constant.CAPTURE_TIME, creationDate);

//        LogUtils.e("image: " + BitmapUtils.bitmapToBytes(context, bitmap));
        db.insert(Constant.TABLE_RDD_IMAGES, null, contentValues);

    }

2、删除数据

/**
     * 从表 rdd_images 中根据 imageId 删除数据
     */
    public static void deleteFromRddImage(SQLiteDatabase db, String imageId) {
        String delSql = "DELETE FROM " + Constant.TABLE_RDD_IMAGES +
                " WHERE " + Constant.IMAGE_ID + " = \"" + imageId + "\"";
        db.execSQL(delSql);
        LogUtils.e("deleteFromRddImage");
    }

3、查询数据的个数

/**
     * 根据 imageId 从表 rdd_image_damages 查询出信息 的个数
     *
     * @param db      数据库对象
     * @param imageId imageId
     * @return
     */
    public static int queryGetCount(SQLiteDatabase db, String imageId) {
//        String sql = "SELECT COUNT(image_id) FROM rdd_image_damages WHERE image_id =  \"imageId\" ";

        String sql = "SELECT COUNT(" + Constant.IMAGE_ID + ") " +
                "FROM " + Constant.TABLE_RDD_IMAGE_DAMAGES +
                " WHERE " + Constant.IMAGE_ID + " = \"" + imageId + "\"";

        Cursor cursor = db.rawQuery(sql, null);
        cursor.moveToFirst();
        int count = cursor.getInt(0);
        cursor.close();
        LogUtils.e("count:" + count);
        return count;
    }

4、查询 5公里矩形范围内的病害信息的经纬度

 /**
     * 根据地图当前中心点的经纬度 查询 5公里矩形范围内的病害信息的经纬度
     *
     * @param db        数据库对象
     * @param longitude 经度
     * @param latitude  纬度
     */
    public static List<LatLng> queryLonLatInCertainArea(SQLiteDatabase db,
                                                        double longitude, double latitude) {
        List<LatLng> list = new ArrayList<>();

        double longitude1 = longitude + DistanceUtil.oneKM2Lon * 5;
        double longitude2 = longitude - DistanceUtil.oneKM2Lon * 5;

        double latitude1 = latitude + DistanceUtil.oneKM2Lat(latitude) * 5;
        double latitude2 = latitude - DistanceUtil.oneKM2Lat(latitude) * 5;

        String sql = "SELECT " + Constant.LONGITUDE + " , " + Constant.LATITUDE +
                " FROM  " + Constant.TABLE_RDD_IMAGES +
                " WHERE " + Constant.LONGITUDE + " BETWEEN " + longitude2 + " AND " + longitude1 +
                " AND " + Constant.LATITUDE + " BETWEEN " + latitude1 + " AND " + latitude2;

        Cursor cursor = db.rawQuery(sql, null);
        while (cursor.moveToNext()) {
            double longitudeReturn = cursor.getDouble(cursor.getColumnIndex(Constant.LONGITUDE));
            double latitudeReturn = cursor.getDouble(cursor.getColumnIndex(Constant.LATITUDE));

            LatLng bean = new LatLng(latitudeReturn, longitudeReturn);
            list.add(bean);
        }
        return list;
    }

5、查询并返回一个数据列表

/**
     * 从本地数据库查询十条未上传的数据,放到一个列表中
     *
     * @param db 数据库对象
     * @return list
     */
    public static ArrayList<CaptureImage> queryRddImageList(SQLiteDatabase db) {
        String sql = "SELECT " + Constant.IMAGE_ID + " , " + Constant.IMAGE + " , " +
                Constant.ANGLE + " , " + Constant.WIDTH + " , " + Constant.HEIGHT + " , " +
                Constant.DPI_WIDTH + " , " + Constant.DPI_HEIGHT + " , " + Constant.GEO_MAP_INFO + " , " +
                Constant.LONGITUDE + " , " + Constant.LATITUDE + " , " + Constant.STREET + " , " +
                Constant.ADDRESS + " , " + Constant.ALTITUDE + " , " + Constant.CAPTURE_TIME +
                " FROM  " + Constant.TABLE_RDD_IMAGES +
                " WHERE " + Constant.IS_UPLOADED + " = 0 " +
                " LIMIT 10";
        Cursor cursor = db.rawQuery(sql, null);
        ArrayList<CaptureImage> list = new ArrayList<>();
        while (cursor.moveToNext()) {
            String imageId = cursor.getString(cursor.getColumnIndex(Constant.IMAGE_ID));
            byte[] image = cursor.getBlob(cursor.getColumnIndex(Constant.IMAGE));
            double angle = cursor.getDouble(cursor.getColumnIndex(Constant.ANGLE));
            double width = cursor.getDouble(cursor.getColumnIndex(Constant.WIDTH));
            double height = cursor.getDouble(cursor.getColumnIndex(Constant.HEIGHT));
            double dpiWidth = cursor.getDouble(cursor.getColumnIndex(Constant.DPI_WIDTH));
            double dpiHeight = cursor.getDouble(cursor.getColumnIndex(Constant.DPI_HEIGHT));
            String geoMapInfo = cursor.getString(cursor.getColumnIndex(Constant.GEO_MAP_INFO));
            double longitude = cursor.getDouble(cursor.getColumnIndex(Constant.LONGITUDE));
            double latitude = cursor.getDouble(cursor.getColumnIndex(Constant.LATITUDE));
            double altitude = cursor.getDouble(cursor.getColumnIndex(Constant.ALTITUDE));
            String address = cursor.getString(cursor.getColumnIndex(Constant.ADDRESS));
            String street = cursor.getString(cursor.getColumnIndex(Constant.STREET));
            long captureTime = cursor.getLong(cursor.getColumnIndex(Constant.CAPTURE_TIME));

            String imageDataBase64 = BitmapUtils.byteArrayToBase64(image);

            CaptureImage captureImage = new CaptureImage();
            captureImage.setImageId(imageId);
            captureImage.setImage(imageDataBase64);
            captureImage.setAngle(angle);
            captureImage.setWidth(width);
            captureImage.setHeight(height);
            captureImage.setDpiWidth(dpiWidth);
            captureImage.setDpiHeight(dpiHeight);
            captureImage.setGeoMapInfo(geoMapInfo);
            captureImage.setLongitude(longitude);
            captureImage.setLatitude(latitude);
            captureImage.setAltitude(altitude);
            captureImage.setStreet(street);
            captureImage.setAddress(address);
            captureImage.setCaptureTime(String.valueOf(captureTime));

            list.add(captureImage);
//            LogUtils.d(rddImage.toString());
            LogUtils.d(list.size() + "");
        }
        cursor.close();
        return list;
    }

6、更新表中某个字段的属性值

发布了638 篇原创文章 · 获赞 775 · 访问量 54万+

猜你喜欢

转载自blog.csdn.net/songzi1228/article/details/104538997