在这篇文章中,我们将带领您了解android–如何在SQLite中选择大写值?的全貌,同时,我们还将为您介绍有关AndroidSQLite中的多主键、android–Wildcard在SQLite中不
在这篇文章中,我们将带领您了解android – 如何在SQLite中选择大写值?的全貌,同时,我们还将为您介绍有关Android SQLite中的多主键、android – Wildcard在SQLite中不起作用、android – 在SQLite中保存资源路径、android – 在SQLite中保存重新排序的RecyclerView的知识,以帮助您更好地理解这个主题。
本文目录一览:- android – 如何在SQLite中选择大写值?
- Android SQLite中的多主键
- android – Wildcard在SQLite中不起作用
- android – 在SQLite中保存资源路径
- android – 在SQLite中保存重新排序的RecyclerView
android – 如何在SQLite中选择大写值?
解决方法
sqlite> SELECT UPPER("Hello,WORLD!");
你好,世界!
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应用程序的搜索中使用通配符,并继续遇到错误.
我正在使用下面的字符串对我的应用程序执行搜索:
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中保存资源路径
我的drawable文件夹中有大约300张小尺寸图片(jpg).当我运行查询时,游标返回特定字符串.现在我需要在ImageView上将其设置为ImageResource,但无论我尝试它,它似乎都不起作用.
我已经尝试将其解析为int,但似乎没有用.无论我尝试什么,logcat一直告诉我R.id.picture1不是一个有效的整数.我前段时间看到过一种可能的解决方案,但我整天都在搜索它,但似乎无法找到它.
我不想要的:将图像转换为字节数组,以便将其保存为blob.我只需要一种方法来存储和检索可绘制的引用,我可以使用它来在ImageView上设置drawable.
我不是那么有经验所以我希望有人可以帮助我.
解决方法
int resId = context.getResources().getIdentifier("picture1","drawable",context.getPackageName()); image.setimageResource(resId);;
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的相关信息,可以在本站进行搜索。
本文标签: