2012-11-27 74 views
0

我在Google数据库上搜索了一些教程。我在将图像插入数据库时​​遇到了一些问题。我曾尝试过很多方法(如setImageBitmap,setImageDrawable,setImageResource),但他们都不工作。我已经将一些图像插入我的drawable-hdpi插入图像到SQL

下面是我的一些代码插入:

public void insertIntoTable(){ 
    try{ 
     mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null); 

     mydb.execSQL("INSERT INTO " + TABLE + "(DNAME, DTAG, DSUMMARY, DINGRE, DSTEP) VALUES('Chicken Cabonara','Chicken','aaa', '3', '5')"); 
     mydb.execSQL("INSERT INTO " + TABLE + "(DNAME, DTAG, DSUMMARY, DINGRE, DSTEP) VALUES('Seafood Spagetti','Fish','bbb', '5', '3')"); 
     mydb.execSQL("INSERT INTO " + TABLE + "(DNAME, DTAG, DSUMMARY, DINGRE, DSTEP) VALUES('Tomyam Soup','Soup','ccc', '3', '1')"); 

     mydb.close(); 
    } 
} 

我用于显示数据代码:

public void showTableValues(){ 
    try{ 
     mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null); 
     Cursor allrows = mydb.rawQuery("SELECT * FROM "+ TABLE, null); 
     System.out.println("COUNT : " + allrows.getCount()); 
     Integer cindex = allrows.getColumnIndex("DNAME"); 
     Integer cindex1 = allrows.getColumnIndex("DTAG"); 
     Integer cindex2 = allrows.getColumnIndex("DSUMMARY"); 
     Integer cindex3 = allrows.getColumnIndex("DINGRE"); 
     Integer cindex4 = allrows.getColumnIndex("DSTEP"); 

     TextView t = new TextView(this); 
     t.setText("========================================"); 
     Linear.addView(t); 

     if(allrows.moveToFirst()){ 
      do{ 
       LinearLayout did_row = new LinearLayout(this); 
       LinearLayout dname_row = new LinearLayout(this); 
       LinearLayout dtag_row= new LinearLayout(this);   
       LinearLayout dsummary_row= new LinearLayout(this); 
       LinearLayout dingre_row= new LinearLayout(this); 
       LinearLayout dstep_row= new LinearLayout(this); 

       final TextView did_ = new TextView(this); 
       final TextView dname_ = new TextView(this); 
       final TextView dtag_ = new TextView(this); 
       final TextView dsummary_ = new TextView(this); 
       final TextView dingre_ = new TextView(this); 
       final TextView dstep_ = new TextView(this); 
       final TextView sep = new TextView(this); 

       String DID = allrows.getString(0); 
       String DNAME= allrows.getString(1); 
       String DTAG= allrows.getString(2); 
       String DSUMMARY= allrows.getString(3); 
       String DINGRE= allrows.getString(4); 
       String DSTEP= allrows.getString(5); 

       System.out.println("DNAME " + allrows.getString(cindex) + " DTAG : "+ allrows.getString(cindex1) + " DSUMMARY : "+ allrows.getString(cindex2) + " DINGRE : "+ allrows.getString(cindex3) + " DSTEP : "+ allrows.getString(cindex4)); 
       System.out.println("DID : "+ DID + " || DNAME " + DNAME + "|| DTAG : "+ DTAG + "|| DSUMMARY : "+ DSUMMARY + "|| DINGRE : "+ DINGRE + "|| DSTEP : "+ DSTEP); 

       did_.setText("ID : " + DID); 
       did_row.addView(did_); 
       Linear.addView(did_row); 

       dname_.setText("NAME : "+ DNAME); 
       dname_row.addView(dname_); 
       Linear.addView(dname_row); 

       dtag_.setText("TAG : " + DTAG); 
       dtag_row.addView(dtag_); 
       Linear.addView(dtag_row); 

       dsummary_.setText("SUMMARY : "+ DSUMMARY); 
       dsummary_row.addView(dsummary_); 
       Linear.addView(dsummary_row); 

       dingre_.setText("INGREDIENT : " + DINGRE); 
       dingre_row.addView(dingre_); 
       Linear.addView(dingre_row); 

       dstep_.setText("STEP : "+ DSTEP); 
       dstep_row.addView(dstep_); 
       Linear.addView(dstep_row); 

       sep.setText("---------------------------------------------------------------"); 
       Linear.addView(sep); 
      } 
      while(allrows.moveToNext()); 
     } 
     mydb.close(); 
    } 
} 

有人能告诉我插入图像(PNG)的方式进入数据库,并显示图片?谢谢。

+2

您可以保存图像路径数据库并保存图像文件夹中。这是最好的方式 –

+0

已被问及在这里回答例如http://stackoverflow.com/questions/7331310/how-to-store-image-as-blob-in-sqlite-how-to-retrieve-it - 但只存储图像的路径通常是一个更好的主意。存储小图标将是好的 – zapl

+0

@NiravRanpara所以,如果图像是在这个路径,/SqlRecipe/res/drawable-hdpi/img1.png,我必须保存在我插入为文本? –

回答

0

您必须将图像作为blob数据插入。您可以查看this链接。

您也可以参考Link1