Android设备连接SQL SERVER,向SQL SERVE

2020-02-24  本文已影响0人  Anivia_Hanger

android设备直连sqlserver需要用到jtds这个jar包,我用的是1.2版本,连接数据库需要用到Connection,插入image的话要用到PreparedStatement,读取需要用到Statement.代码如下

插入数据:

Connection sqlConn = DriverManager.getConnection("jdbc:jtds:sqlserver://" + 数据库IP+ "/" + 数据库名称, 数据库账号, 数据库密码);

 private void doSaveTest(int imgId, String name, Bitmap image) {
if(recgImg==null){
return;
}
 try {
   byte[] photo_bytes = bitmapToBytes(image);
//假设Test表字段为(照片编号:int,照片:image,姓名:varchar)
                PreparedStatement pstmt = sqlConn.prepareStatement("INSERT INTO Test VALUES(? ,? ,? )");
                pstmt.setInt(1, imgId);
                pstmt.setBytes(2, image_bytes);
                pstmt.setString(3,name);
                pstmt.executeUpdate();
                pstmt.clearParameters();
                pstmt.close();
} catch (SQLException e) {
            e.printStackTrace();
        }
}

Bitmap二进制转换:

private byte[] bitmapToBytes(Bitmap bitmap) {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 75, bos);
        byte[] bytes = bos.toByteArray();
        return bytes;
    }

读取图片:

private Bitmap getPhoto(String imgId) {
        if (sImgId == null) {
            return null;
        }
        Bitmap photo = null;
        Bitmap photoScale = null;
        InputStream input = null;
        String sql = "";
        try {
            sql = "SELECT * FROM Test WHERE imgId = '" + imgId + "'";
            Statement stmt = sqlConn.createStatement();
            ResultSet rs = stmt.executeQuery(sql);
            if (rs.next()) {//<code>ResultSet</code>最初指向第一行  
                byte[] imgBytes = rs.getBytes("Test_Image");

                BitmapFactory.Options options = new BitmapFactory.Options();
                options.inSampleSize = 1 + imgBytes.length / 256000;
                input = new ByteArrayInputStream(imgBytes);
                SoftReference softRef = new SoftReference(BitmapFactory.decodeStream(input, null, options));
                photo = (Bitmap) softRef.get();
                int width = photo.getWidth();
                int height = photo.getHeight();
                int startX, startY;
                int scalWidth, scaleHeight;
                if ((width > 300) || (height > 300)) {
                    Matrix matrix = new Matrix();
                    if (width > height) {
                        startX = (width - height) / 2;
                        startY = 0;
                        scalWidth = height;
                        scaleHeight = height;
                    } else {
                        startX = 0;
                        startY = 0;
                        scalWidth = width;
                        scaleHeight = width;
                    }
                    final float sx = 300 / (float) scalWidth;
                    final float sy = 300 / (float) scaleHeight;
                    matrix.setScale(sx, sy);
                    photoScale = Bitmap.createBitmap(photo, startX, startY, scalWidth, scaleHeight, matrix, false);
                }
            }
            rs.close();
            stmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        if (photoScale != null) {
            photo.recycle();
            return photoScale;
        }
        return photo;
    }
上一篇下一篇

猜你喜欢

热点阅读