GVKun编程网logo

android – 如何在SQLite中选择大写值?

10

在这篇文章中,我们将带领您了解android–如何在SQLite中选择大写值?的全貌,同时,我们还将为您介绍有关AndroidSQLite中的多主键、android–Wildcard在SQLite中不

在这篇文章中,我们将带领您了解android – 如何在SQLite中选择大写值?的全貌,同时,我们还将为您介绍有关Android SQLite中的多主键、android – Wildcard在SQLite中不起作用、android – 在SQLite中保存资源路径、android – 在SQLite中保存重新排序的RecyclerView的知识,以帮助您更好地理解这个主题。

本文目录一览:

android – 如何在SQLite中选择大写值?

android – 如何在SQLite中选择大写值?

在sqlite数据库中,我已经将所有值存储为大写.如何使用小写选择数据库中的指定值?

解决方法

对于从Google到达这里的任何人来说,如何在sqlite中选择大写,如预期的那样,这将工作:
sqlite> SELECT UPPER("Hello,WORLD!");

你好,世界!

Android SQLite中的多主键

Android SQLite中的多主键

在sqlite for Android中,添加多主键的正确方法是什么?

目前我有:

String Create_table = "CREATE TABLE project ( keyId INTEGER PRIMARY KEY, keyName TEXT PRIMARY KEY)";

我想到的替代方法是:

   String Create_table = "CREATE TABLE project (keyID INTEGER, keyName TEXT, PRIMARY KEY(keyID, keyName))";

两者都有效吗?如果是这样,哪个更好?另外我如何禁止NULL值?

解决方法:

不,不可能为单个表创建多个主键.这是任何sql的基本规则.但是,您可以使用其他约束(如带有索引的UNIQUE)来实现此目的.

这不是有效的sql语法:

String Create_table = “CREATE TABLE project ( keyId INTEGER PRIMARY KEY, keyName TEXT PRIMARY KEY)”;

在其他方面,您可以为多列创建主键,如下所示:

Create Table yourTableName (col1, col2, col3, PRIMARY KEY (col1, col2));

How do I disallow NULL values?

您可以使用NOT NULL约束,它不允许您输入NULL值.

android – Wildcard在SQLite中不起作用

android – Wildcard在SQLite中不起作用

我一直试图在Android应用程序的搜索中使用通配符,并继续遇到错误.

我正在使用下面的字符串对我的应用程序执行搜索:

Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" },
              "name LIKE %?%", new String[] { query }, null, null, null);

当我使用名称LIKE%?%或name =%?%时,我得到一个“近”%“:语法错误:,同时编译:SELECT _id,name FROM namedrxns WHERE name =%?%”error.

但是名字LIKE’%?%’或name =’%?%’我改为“绑定或列索引超出范围:handle 0x40cb70”

有人可以告诉我我做错了什么吗?

谢谢!

解决方法:

将%附加到查询参数.

即:

Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" },
          "name LIKE ?", new String[] { "%"+query+"%" }, null, null, null);

就像Thomas Mueller已经说过的那样,请注意值中的%和_仍然可以作为通配符使用.

android – 在SQLite中保存资源路径

android – 在SQLite中保存资源路径

我需要将我的资源文件夹中的图像保存在sqlite数据库中.此数据库已预先加载(复制到数据/路径),因此运行时不会填充.我试图在sqlite的文本字段中保存它:“R.drawable.picture1”.

我的drawable文件夹中有大约300张小尺寸图片(jpg).当我运行查询时,游标返回特定字符串.现在我需要在ImageView上将其设置为ImageResource,但无论我尝试它,它似乎都不起作用.

我已经尝试将其解析为int,但似乎没有用.无论我尝试什么,logcat一直告诉我R.id.picture1不是一个有效的整数.我前段时间看到过一种可能的解决方案,但我整天都在搜索它,但似乎无法找到它.

我不想要的:将图像转换为字节数组,以便将其保存为blob.我只需要一种方法来存储和检索可绘制的引用,我可以使用它来在ImageView上设置drawable.

我不是那么有经验所以我希望有人可以帮助我.

解决方法

如果您具有资源的名称,则可以查找资源标识符并将其用于ImageResource.

int resId = context.getResources().getIdentifier("picture1","drawable",context.getPackageName());
image.setimageResource(resId);;

android – 在SQLite中保存重新排序的RecyclerView

android – 在SQLite中保存重新排序的RecyclerView

所以我试图在我的待办事项列表应用程序中实现拖放,但是我在移动时保存行的顺序时遇到问题 – 即我移动了项目,退出应用程序并恢复到原始位置.我想到了一个解决方案.

我的解决方案

在我的表中创建一个列:specified_position.每次移动一行时,onItemmove()方法都会返回一个fromPosition和toPosition.将行的位置移动到toPosition,然后递增/更新那里及以上的所有值.每次读取表格时,它都会检查位置并根据它进行排序.

我的问题:

我的解决方案是否正确有没有更好,更容易的方法而不是这样做?非常感谢!

解决方法

我的待办事项列表应用程序遇到了同样的问题.在这里,我与您分享我的解决方案.

首先,我在Database Helper上有一个updateSortID()函数

public void updateSortID(Integer newID,int rowid)
{
     sqliteDatabase db = this.getWritableDatabase();
        String strsql = "UPDATE " +  TABLE_NAME_todos +  " SET " + ITEM_SORT_ID +  "=" + newID + " WHERE " + ID +" = "+ rowid;

        db.execsql(strsql);
}

然后在活动或适配器上,你应该听你的位置更改项目,你需要有这样的功能.它将更新受此位置更改影响的所有项目的所有排序ID.

@Override
public void drop(int from,int to) {
    // Todo Auto-generated method stub

    Log.d("drop",String.valueOf(from));
    Log.d("drop",String.valueOf(to));

    ArrayList<Items> temp = db.getTodos();

    int tempstart = from;
    int tempend = to;

    if (from < to) {
        Log.d("up to down","yes");
        db.updateSortID(temp.get(tempend).getSortID(),temp.get(tempstart).getID());
        for (int i = from; i <= to - 1; i++) {
            db.updateSortID(temp.get(i).getSortID(),temp.get(i+1).getID());
        }
    } else if (from > to) {
        Log.d("up to down","no");
        db.updateSortID(temp.get(tempend).getSortID(),temp.get(tempstart).getID());            
        for (int i = from; i >= to + 1; i--) {
            db.updateSortID(temp.get(i).getSortID(),temp.get(i-1).getID());                
        }
    }

    listChanged(); // this is the method I call `notifyDataSetChanged()` method and other related functions
}

我们今天的关于android – 如何在SQLite中选择大写值?的分享就到这里,谢谢您的阅读,如果想了解更多关于Android SQLite中的多主键、android – Wildcard在SQLite中不起作用、android – 在SQLite中保存资源路径、android – 在SQLite中保存重新排序的RecyclerView的相关信息,可以在本站进行搜索。

本文标签: