我在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);
}
}
}
我想从数据库中获取数据“点”,但是当我运行我的应用程序时,这个崩溃了
答案 0 :(得分:1)
尽管您已提取光标,但光标位于 beforeFirstRow 的位置,您需要移动到光标中的一行(如果有),然后才能检索数据。
完成操作后,应始终关闭光标。由于您不返回游标,因此应先将其关闭,然后再返回从游标中提取的值。
尝试以下方法:-
import { Component, ElementRef, ViewChild, AfterViewInit} from '@angular/core';
@Component({
selector: 'app',
template: `
<div #myivId>Some text</div>
`, }) export class AppComponent implements AfterViewInit {
@ViewChild('myDivId') myDiv: ElementRef;
ngAfterViewInit() {
console.log(this.myDiv.nativeElement.innerHTML);
} }
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;
}