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、更新表中某个字段的属性值

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值