如何在 Android Studio 上检索 SQL 数据库中的元素?
Posted
技术标签:
【中文标题】如何在 Android Studio 上检索 SQL 数据库中的元素?【英文标题】:how to retrieve an element in the SQL database on Android Studio? 【发布时间】:2019-07-03 01:06:38 【问题描述】:我在 android Studio 上用 SQL 创建了一个数据库,但我无法恢复和更新这个数据库中的数据。
我检查了很多网站和指南,但没有一个给我正确的答案。
@Override
public void onCreate(SQLiteDatabase db)
db.execSQL("Create table user(pseudo text primary key, password text, email text, points integer, pointsshop integer)");
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
db.execSQL("drop table if exists user");
//inserting in database
public boolean insert(String pseudo, String password, String email, int points, int pointsshop)
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("pseudo",pseudo);
contentValues.put("password",password);
contentValues.put("email",email);
contentValues.put("points",points);
contentValues.put("pointsshop",pointsshop);
long ins = db.insert("user",null,contentValues);
if(ins==-1)return false;
else return true;
public void update_points(int points, String pseudo)
this.getWritableDatabase().execSQL("update user set
points='" + points + "' where pseudo='" + pseudo + "'");
public int get_points(String pseudo)
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("Select points from user where
pseudo=?",new String[]pseudo);
return cursor.getInt(0);
我想从我的数据库中获取数据“点”,但是当我运行我的应用程序时,这个崩溃了
【问题讨论】:
【参考方案1】:虽然您已提取光标,但光标位于名为 beforeFirstRow 的位置,您需要先移动到光标中的一行(如果有),然后才能检索数据。
你应该总是在完成后关闭光标。由于您没有返回游标,因此应在返回从游标中提取的值之前将其关闭。
尝试以下方法:-
public int get_points(String pseudo)
int rv = -1;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("Select points from user where
pseudo=?",new String[]pseudo);
if (cursor.moveToFirst())
rv = cursor.getInt(cursor.getColumnIndex("points"));
cursor.close();
return rv;
请注意,如果没有提取数据,则上述内容将返回 -1。此值可能不是没有提取数据的有用指标,因此您可能需要使用不同的值。
如果可以进行移动,Cursor move 方法(如上面使用的 moveToFirst)返回 true,否则返回 false。因此if (cursor.moveToFirst())
getColumnIndex 已被使用,因为它不太容易由于硬编码偏移的错误计算而引入无意的错误。
【讨论】:
以上是关于如何在 Android Studio 上检索 SQL 数据库中的元素?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Real-time Firebase 检索使用 Geofire 设置的多个位置并在 Android Studio 的地图上显示它们?
Android Studio + Linux:如何检索密钥别名 [重复]
如何从 Android Studio 中检索已保存的密钥库密码?