保存图像SQLite数据库

时间:2016-02-27 14:29:18

标签: java android sqlite

您好我有这个SQLite数据库工作正常,我添加了一个名为Image的列,其中包含数据类型Blob。然后,我允许用户从他们的库中选择一个图像,然后从中将其更改为URi然后更改为byte [],但是当我尝试保存数据时,不会收到任何错误消息,但数据不会被保存,我不知道为什么?

任何帮助?

我的查询创建表

public static String inputStudent(int i) {
    String studentNam = null;
    System.out.print("Enter student name"+i+": ");
    studentNum=new Scanner(System.in).nextLine();
    return studentNum;
}

我的插入方法

 public String CREATEQUERY = "CREATE TABLE " + TableData.TableInfo.TABLE_NAME + "("+ TableData.TableInfo.USERNAME + " TEXT," + TableData.TableInfo.PASSWORD + " TEXT," + TableData.TableInfo.IMAGE + "BLOB);";

调用此方法并保存数据的java类

public void InsertData (DatabasOpperations DBOpp, String Name, String Password, byte[] Image){
    SQLiteDatabase SQL = DBOpp.getWritableDatabase();
    ContentValues ContentV = new ContentValues();
    ContentV.put(TableData.TableInfo.USERNAME, Name);
    ContentV.put(TableData.TableInfo.PASSWORD, Password);
    ContentV.put(TableData.TableInfo.IMAGE, Image);
    long Insert = SQL.insert(TableData.TableInfo.TABLE_NAME, null, ContentV);
    Cursor Cur = SQL.query(TableData.TableInfo.TABLE_NAME, null, null, null, null, null, null);
    int Res = Cur.getCount();
    int Res2 = Cur.getColumnIndex(TableData.TableInfo.IMAGE);
    Log.d("DatabaseOperations", "Success, 1 Row Added");
    Log.d("DatabaseOperations", "Num " + Res);
    Log.d("DatabaseOperations", "Num " + Res2);

}

DBByte是

DB.InsertData(DB, Uname, Pass, DBByte);
Toast.makeText(getApplicationContext(), "Success, Registered!", Toast.LENGTH_SHORT).show();
Intent Home = new Intent(Reg.this, MainActivity.class);
startActivity(Home);
finish();

图像从Uri转换为byte []

public byte[] DBByte;

1 个答案:

答案 0 :(得分:1)

你在这里错过了一个空格,所以你没有BLOB专栏

TableInfo.IMAGE + "BLOB);"