标签: android-sqlite

仅查询表中的第一个数据

我正在尝试仅查询表中的第一个数据.

Cursor img_cursor = db.query(
                    IMAGE_URL_TABLE_NAME,
                    new String[]{"small_img_url" , "large_img_url"},
                    null",
                    null, null, null, null);
Run Code Online (Sandbox Code Playgroud)

有人能告诉我如何实现只从表中检索第一个数据的查询吗?

我想我解决了答案:

Cursor img_cursor = db.query(
                    IMAGE_URL_TABLE_NAME,
                    new String[]{"small_img_url" , "large_img_url"},
                    null",
                    null, null, null, null , "1");
Run Code Online (Sandbox Code Playgroud)

limit 1先用过,但应用程序崩溃了.只有当我将数字作为String遗嘱传递时才有效.当我们使用limit参数时,查询有8个参数.

sqlite android android-sqlite

1
推荐指数
1
解决办法
891
查看次数

禁止重复记录并检查数据库是否可用

我正在创建一个数据库,我正在插入一行,如下所示:

/* Add two DataSets to the Table. */
myDB.execSQL("INSERT INTO "
              + MY_DATABASE_TABLE
              + " (LastName, FirstName, Country, Age)"
              + " VALUES ('Gramlich', 'Nicolas', 'Germany', 20);");
 myDB.execSQL("INSERT INTO "
              + MY_DATABASE_TABLE
              + " (LastName, FirstName, Country, Age)"
              + " VALUES ('Doe', 'John', 'US', 34);");
Run Code Online (Sandbox Code Playgroud)

关于上面的代码我有两个问题:

  1. 如何禁止重复记录?我想在插入时检查传入的数据.我怎样才能做到这一点?我应该用IF NOT EXISTS吗?

  2. 如何检查该数据库是否可用?到目前为止,没有任何成功,我尝试过:

    private static String DB_PATH = "/data/data/YOUR_PACKAGE/databases/myDBName";
    private static String DB_NAME = "myDBName";
    
    private boolean checkDataBase() {
        SQLiteDatabase checkDB = null;
        try {
            checkDB = SQLiteDatabase.openDatabase(DB_PATH, null, …
    Run Code Online (Sandbox Code Playgroud)

database sqlite android android-sqlite

1
推荐指数
1
解决办法
178
查看次数

android.database.CursorIndexOutOfBoundsException:请求索引-1,大小为7

我的应用程序中有一个数据库,我使用一个表单使用edittext输入数据,完成后,用户将单击提交.我点击之前输入的列表数据之一到另一个活动,以显示之前输入的数据,它会强制关闭.我不知道我的错在哪里,这是我的数据库:

        class DBSpaj extends SQLiteOpenHelper {
        private static final String DATABASE_NAME="dbspaj.db";
        private static final int SCHEMA_VERSION=1;

        public DBSpaj(Context context) {
            super(context, DATABASE_NAME, null, SCHEMA_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("DROP TABLE IF EXISTS table_spaj");
            db.execSQL("CREATE TABLE if not exists table_spaj (_id INTEGER PRIMARY KEY AUTOINCREMENT," +
                    " agama TEXT,"+
                    " agamatt TEXT,"+
                    " alamat TEXT,"+
                    " alamat_tt TEXT,"+
                    " alamat_tagihan TEXT,"+
                    " alamat_tagihan_tt TEXT,"+
                    " alamatkantor TEXT,"+
                    " curenttime TEXT," +
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int …
Run Code Online (Sandbox Code Playgroud)

java database android android-logcat android-sqlite

1
推荐指数
1
解决办法
1232
查看次数

在从中访问数据之前,请确保正确初始化Cursor

我试图从我的数据库中获取数据.

这是我的代码:

String[] columns = new String[] {COLUMN_FACEBOOK_ALBUM_COVER, COLUMN_FACEBOOK_ALBUM_IS_ACTIVE};

        String whereClause = COLUMN_FACEBOOK_ALBUM_IS_ACTIVE + "= '" + 1 + "'";

        Cursor cAlbum = ourDatabase.query(TABLE_FACEBOOK, columns, whereClause,null, null, null, null);

        columns = new String[] {COLUMN_FACEBOOK_BIG_IMAGE, COLUMN_FACEBOOK_IMAGE_IS_ACTIVE};

        whereClause = COLUMN_FACEBOOK_IMAGE_IS_ACTIVE + "= '" + 1 + "'";

        Cursor cImage = ourDatabase.query(TABLE_FACEBOOK_IMAGES, columns, null,null, null, null, null);

        String[] list = new String[cAlbum.getCount()+cImage.getCount()];

        int p = 0;

        if(cAlbum.getCount() < 1 && cImage.getCount() < 1)
        {
            cAlbum.close();
            cImage.close();
            return null;
        }

        Log.i("cImage length", cImage.getCount()+"");
        Log.i("cAlbum …
Run Code Online (Sandbox Code Playgroud)

android android-sqlite

1
推荐指数
3
解决办法
2万
查看次数

Android:FragmentPagerAdapter不保存Fragment的状态?

我有FragmentPagerAdapter的问题.

我无法保存片段的状态,然后在片段中有视图.每当我使用左右滑动时,通过覆盖扩展FragmentPagerAdapter的静态类中的方法getItem(int position)来重新创建Fragment.

 public static class GraphicsCollectionPagerAdapter extends FragmentPagerAdapter {

    final int NUM_ITEMS = 3; // number of tabs

    public GraphicsCollectionPagerAdapter(FragmentManager fm) {

        super(fm);
        fragmentList = new AnalyzeFragmentPageListWithDate();
        fragment1 = new  AnalyzeFragmentPage1();
        fragment2 = new  AnalyzeFragmentPage2();
    }

    @Override
    public Fragment getItem(int position) {
        //Log.i(TAG, "getItem() -> New fragment at position " + position);


        switch (position) {

        case 0:         
            return fragmentList;
       case 1:
            return fragment1;
       case 2:
             return fragment2;
        }
        return null;
    }

    @Override
    public int getCount() {
         return 3;
    } …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments fragmentpageradapter android-sqlite

1
推荐指数
1
解决办法
2358
查看次数

更新查询在Android Sqlite中不起作用

我的Java代码更新数据库表

String qq="UPDATE ChallanItems SET Recieve ="+str+" WHERE ItemNo = "+code;
                    Log.d("Qry", qq);
                     myDbHelper.updatequery(qq);
Run Code Online (Sandbox Code Playgroud)

updatequery方法

public void updatequery(String qry)
    {
        Cursor c = myDataBase.rawQuery(qry, null);


        Log.d("Up", ""+c.getCount());
    }
Run Code Online (Sandbox Code Playgroud)

当我更新数据库时,计数返回0并且表未更新

我正在使用这个但是没有工作

String qq="UPDATE ChallanItems SET Recieve ="+str+" WHERE ItemNo = "+"'"+code+"'";
Run Code Online (Sandbox Code Playgroud)

请帮助我如何解决这个问题

提前致谢

sqlite android android-sqlite

1
推荐指数
1
解决办法
3395
查看次数

为什么我的SQL create语句导致我的应用程序崩溃?

错误信息:

android.database.sqlite.SQLiteException: near "transaction": syntax error (code 1): , while compiling: **create table transaction ( _id integer primary key autoincrement, amount real, type varchar(20), date integer)
Run Code Online (Sandbox Code Playgroud)

我的应用程序存储由自动生成的ID,花费的金额,付款类型和日期组成的货币交易.我的应用程序编译正常,但是当我尝试运行数据库是sqlite数据库的活动时,应用程序崩溃了上面的消息.至于我意识到我的SQL语句是有效的,任何人都可以提供任何可能是原因的洞察力吗?

Java代码:

 db.execSQL("create table transaction (" +
        " _id integer primary key autoincrement, amount real, type varchar(20), date integer)");
Run Code Online (Sandbox Code Playgroud)

谢谢

java sqlite android android-sqlite

1
推荐指数
1
解决办法
151
查看次数

更新sqlite android中的最后一行

我正在尝试进行查询以更新表的最后一行。这是我正在使用的查询:

String updateQuery = "Update table set col = '"+ bla +"' where id=SELECT max(id)";
Run Code Online (Sandbox Code Playgroud)

但这给出了平均错误。.我知道如何更新SQL中的最后一行,但我无法在SQLITE中弄清楚。我想念什么?

sqlite android android-sqlite

1
推荐指数
1
解决办法
2222
查看次数

通过PHONE.CONTENT_URI检索联系人返回重复的行

我正在尝试通过帐户类型从原始联系人中检索电话号码.使用下面的代码段,

String SELECTION =
            ContactsContract.RawContacts.ACCOUNT_TYPE + "='" + Constants.ACCOUNT_TYPE + "'";

    ContentResolver cr = this.getContentResolver();
    Cursor cur = cr.query(ContactsContract.RawContacts.CONTENT_URI,
            null, SELECTION, null, ContactsContract.Contacts.DISPLAY_NAME + " ASC");
    if (cur.getCount() > 0) {
        while (cur.moveToNext()) {
            String type = cur.getString(cur.getColumnIndex(ContactsContract.RawContacts.ACCOUNT_TYPE));
            String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            //String phone = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            Log.e("number",name);
           // hasPhoneNumber(cur.getString(cur.getColumnIndex(ContactsContract.RawContacts._ID)));
        }
        cur.close();
    }
Run Code Online (Sandbox Code Playgroud)

我可以检索绑定到帐户类型的所有联系人,但是,hasPhoneNumber(String contactId)返回一个空光标.

private boolean hasPhoneNumber(String id) {
    Cursor pCur = this.getContentResolver().query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
            null,
            ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
            new String[]{id}, null);
    while (pCur.moveToNext()) {
        String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); …
Run Code Online (Sandbox Code Playgroud)

java android android-sqlite

1
推荐指数
1
解决办法
1064
查看次数

在Sqlite中为具有LONG数据类型的字段的表创建房间实体

App Database的Items表的价格Long数据类型为Long。Db版本= 1

CREATE TABLE items (_id INTEGER PRIMARY KEY AUTOINCREMENT,item_id 
INTEGER,title TEXT,price LONG, UNIQUE (item_id) ON CONFLICT IGNORE)
Run Code Online (Sandbox Code Playgroud)

尝试迁移到Room时遇到以下问题

java.lang.IllegalStateException: Migration didn't properly handle items(moka.pos.test.data.entity.Item).

Expected : price=Column{name='price', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0}
Found : price=Column{name='price', type='LONG', affinity='1', notNull=false, primaryKeyPosition=0}
Run Code Online (Sandbox Code Playgroud)

这是我的实体类

@Entity(tableName = "items")
public class Item {

@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "_id")
private Integer _ID;

@ColumnInfo(name = "item_id")
private Integer id;

@ColumnInfo(name = "title")
private String title;

@ColumnInfo(name = "price") …
Run Code Online (Sandbox Code Playgroud)

android android-sqlite android-room

1
推荐指数
2
解决办法
732
查看次数