Articles of SQLite

关于在sqlite db中存储图像的java.lang.OutOfMemoryError

我想将图像存储在我的数据库中。 另外,我想检查图像和标题是否已存在于数据库中。 如果是这样,它将不会将它们添加到数据库中。 这是我的class级。 景点 public class Attractions extends ListActivity { DataBaseHandler db = new DataBaseHandler(this); ArrayList imageArry = new ArrayList(); List contacts; ContactImageAdapter adapter; int ctr, loaded; int [] landmarkImages={R.drawable.oblation,R.drawable.eastwood,R.drawable.ecopark,R.drawable.circle}; String []landmarkDetails = { “Oblation”, “Eastwood”, “Ecopark”, “QC Circle”}; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { […]

如何通过游标获取android中的Timestamp列值

如何通过游标从数据库列获取Timestamp值并将其存储在android sdk中的Timestampvariables中。 我使用java.sql.Timestamp,sqlite数据库中的值是TIMESTAMPtypes。 我创建了一个具有所有字段作为数据库列名的类,并希望在从数据库中读取记录后创建新对象。

如何存储自定义对象的arraylist?

我创建了一个由自定义对象组成的arraylist。 基本上用户将创建一个类,每次创建一个类时,都会在arraylist中添加一个新的Lecture(我的自定义对象)。 我需要保存生成的arraylist,以便即使重新启动应用程序也会保存用户的类。 根据我的理解,我必须使我的课程可序列化。 但我到底该怎么做? 然后一旦它序列化我该怎么办? public class Lecture{ public String title; public String startTime; public String endTime; public String day; public boolean classEnabled; public Lecture(String title, String startTime, String endTime, String day, boolean enable){ this.title = title; this.startTime = startTime; this.endTime = endTime; this.day = day; this.classEnabled = enable; } //Getters and setters below

使用android中的游标从sqlite数据库显示图像

我想使用游标从sqlite数据库中显示imageview中的图像。 我使用下面的代码来检索图像,但我无法在imageview中显示图像。 Cursor c=this.db.query(TABLE_NAME, new String[] { “name”,”price”,”image” }, null, null, null, null, null); name.setText(c.getString(0)); price.setText(c.getString(1)); byte b[]=c.getBlob(2); Bitmap bp=BitmapFactory.decodeByteArray(b, 0, b.length); ImageView image=(ImageView)findViewById(R.id.ImageView); //ByteArrayInputStream imageStream = new ByteArrayInputStream(b); //Bitmap theImage = BitmapFactory.decodeStream(imageStream); //image.setImageBitmap(theImage); image.setImageBitmap(bp); 除了图像,将显示名称和价格,但不会显示图像。 任何可以帮助我解决这个问题的建议或代码。 请帮帮我。 提前致谢..

为什么我的exception处理程序没有捕获Android SQLite插入错误?

我是第一次使用SQLite,并且我正在尝试学习它的exception处理,所以我在我的测试应用程序中强制插入错误。 发生exception,我看到它写入了Eclipse LogCat输出窗口。 但是它不会被代码捕获。 我在这里看到了其他关于确保使用正确的exceptiontypes的问题,并认为我已经做对了。 知道我错过了什么吗? 在我的主要活动中的以下语句中, myTable是一个扩展我自己的AbstractDbAdapter的类(它有一个扩展SQLiteOpenHelper的类DatabaseHelper )。 try { myTable.create(“dupkey”); } catch (android.database.sqlite.SQLiteConstraintException e) { Log.e(TAG, “SQLiteConstraintException:” + e.getMessage()); } catch (android.database.sqlite.SQLiteException e) { Log.e(TAG, “SQLiteException:” + e.getMessage()); } catch (Exception e) { Log.e(TAG, “Exception:” + e.getMessage()); } 样本堆栈跟踪: Error inserting id=”dupkey” last_seen_ts=1360624732 first_seen_ts=1360624732 android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed at android.database.sqlite.SQLiteStatement.native_execute(Native Method) […]

不会调用Sqlite数据库onUpgrade()

我正在开发一个Android应用程序,我在资产文件夹中使用了现有的sqlite数据库。 所以我实际上从该文件夹复制数据库。 用户还可以保存自己的数据(将任何内容标记为collections)。 我在市场上上传了一个版本。 现在我想在数据库中添加一些新数据并上传新版本。 如果用户从市场更新应用程序,我想保留用户数据(从以前的版本)并添加新数据。 我做了一些谷歌,发现升级方法应该做的伎俩。 但是我正在从代码中更改DATABASE_VERSION,但是on upgrade方法没有得到调用。 我想知道我错过了什么。 这是我的代码: public class DataBaseHelper extends SQLiteOpenHelper { private static String DB_PATH = “/data/data/riskycoder.login/databases/”; public static String DB_NAME = “datenbank_EN.sqlite”; private SQLiteDatabase myDataBase; private final Context myContext; private static final int DATABASE_VERSION = 1; public DataBaseHelper(Context context) { super(context, DB_NAME, null, DATABASE_VERSION); this.myContext = context; } […]

如何在Android上扩展ORMLite的BaseDaoImpl类以扩展function

我想知道是否有办法在Android上扩展ORMLite的BaseDaoImpl类。 在我的Android项目中,我使用几个不同的Dao对象来访问不同的业务对象。 我的业务对象存储在不同的表中,并且都是从具有两个成员Long id;的BusinessObject基类inheritance而来的Long id; 和Long objectId; 其中id是数据库表中对象的真正唯一ID。 public abstract class BusinessObject{ public static final String ID_COLUMN_NAME = “_id”; public static final String OBJECT_ID_COLUMN_NAME = “object_id”; @SerializedName(value=”_id”) @DatabaseField(canBeNull=false, columnName = ID_COLUMN_NAME, generatedId=true) private int id; @SerializedName(value=”id”) @DatabaseField(canBeNull=false, columnName=OBJECT_ID_COLUMN_NAME, index=true, unique = true) private long objectId; } 现在我希望能够通过id和objectId删除业务对象。 由于BaseDaoImpl类,当然已经可以删除id。 为了能够通过objectId删除它们,我想到了扩展BaseDaoImpl类并向它添加generics方法deleteByObjectId()方法。 在方法中,我将使用dao的delete()方法删除该对象,该方法采用PreparedDelete语句。 public class ExtendedDaoImple extends BaseDaoImpl […]

警告:不要硬编码“/ data /”; 请改用Context.getFilesDir()。getPath()

我开发了一个应用程序,我将数据库从assets文件夹复制到我的硬编码路径。 所以eclipse给了我警告: Do not hardcode “/data/”; use Context.getFilesDir().getPath() instead 我在谷歌搜索并find答案使用: Context.getFilesDir().getPath(); 并且硬编码不适用于每个设备,有些可能会出错或无法正常工作。 但通过实施上述我正在收到错误。 我的代码如下: private final Context myContext; 在这里得到警告 private static String DB_PATH = “/data/data/com.example.abc/databases/”; private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = “exampledb.sqlite”; static SQLiteDatabase sqliteDataBase; public DataBaseHelperClass(Context context) { super(context, DATABASE_NAME, null ,DATABASE_VERSION); this.myContext = context; } public […]

android sqlite查询多个在哪里

这是我目前的sqlite代码: Cursor c = sqlDatabase.rawQuery(“select docid as _id, recipeID from ” + TABLE_RECIPE_NAME + ” where ” + KEY_ownerID + ” = ? “, new String[] { ownerID}); 它工作正常,但当我尝试添加多个这样的地方: Cursor c = sqlDatabase.rawQuery(“select docid as _id, recipeID from ” + TABLE_RECIPE_NAME + ” where ” + KEY_ownerID + ” = ?, ” + KEY_partnerID + […]

Android的SQLiteDatabase中的冲突解决方案

如果我插入重复的行,Android的SQLite库如何解决冲突? 我正在为API级别7构建我的应用程序,遗憾的是,它没有从API级别8开始包含的SQLiteDatabase.insertOnConflict()方法。