如何将图像上传到SQLite数据库?

时间:2016-04-22 21:49:27

标签: java android sqlite qsqldatabase

我正在尝试创建一个用户上传图片并将其保存在SQLite数据库中的应用程序。到目前为止,我已成功设法在遵循教程的同时将图像上传到应用程序,但是我不知道如何将其保存在SQLite中,以便当活动关闭并再次打开时,图像会保留在那里。

我的代码:

import java.util.*;
public class sudoku{

protected static int n;
protected static int[][] game;

public static boolean checkRow(int a, int b){
    boolean z = true;
    for(int i=0;i<n;i++){
        if(i==b) continue;
        else if(game[a][b]==game[a][i]){
            z = false;
            break;
        }
    }
    return(z);
}

public static boolean checkColumn(int a, int b){
    boolean z = true;
    for(int i=0;i<n;i++){
        if(i==a) continue;
        else if(game[i][b]==game[a][b]){
            z = false;
            break;
        }
    }
    return(z);
}

public static boolean checkBox(int a, int b){
    boolean z = true;
    int x = (int)Math.sqrt(n)*(int)(a/Math.sqrt(n));
    int y = (int)Math.sqrt(n)*(int)(b/Math.sqrt(n));
        for(int i=x;i<x+Math.sqrt(n);i++){
            for(int j=y;j<y+Math.sqrt(n);j++){
                if(a==i&&b==j) continue;
                else if(game[a][b]==game[i][j]){
                    z = false;
                    break;
                }
            }
        }
    return(z);
}

public static boolean checkAll(int a, int b){
    return(checkRow(a,b)&&checkColumn(a,b)&&checkBox(a,b));
}

public static void solvePrevious(int row, int col){
    if(row==0&&col==0){
        System.out.println("This game is unsolvable.");
        return;
    }
    else if(col==0) solve(row-1,n-1,game[row-1][n-1]+1);
    else solve(row,col-1,game[row][col]+1);
}

public static void solveNext(int row, int col){
    if(row==n-1&&col==n-1) return;
    else if(col==n-1) solve(row+1,0,1);
    else solve(row,col+1,1);
}

public static void solve(int row, int col, int value){
    if(value<=n){
        game[row][col] = value;
        if(checkAll(row,col)) solveNext(row,col);
        else solve(row,col,value+1);
    }
    else solvePrevious(row,col);
}

public static void main(String[] args){
    Scanner inp = new Scanner(System.in);
    System.out.println("What is the side length of the puzzle?");
    n = 0;
    do{
        n = inp.nextInt();
        if(Math.sqrt(n)%1!=0) System.out.println("The side length must be a perfect square.");
    }while(Math.sqrt(n)%1!=0);
    game = new int[n][n];
    solve(0,0,1);
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            System.out.print(game[i][j]+" ");
        }
        System.out.println(" ");
    }
}

1 个答案:

答案 0 :(得分:1)

在数据库中存储如此大的项目并不是正确的方法。将文件存储在应用程序的专用文件系统中,然后将该文件的路径存储在数据库中。