Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每次更新数据库时从游标获取值_Java_Android - Fatal编程技术网

Java 每次更新数据库时从游标获取值

Java 每次更新数据库时从游标获取值,java,android,Java,Android,我有两项活动。一个是从edittext更新数据库中的值,在第二个活动中,我希望将数据库中的值放入textview。第一次更新值时一切正常,但第二次无法更新textview,我在textview值中看到“0”。当我给出断点时,我发现我的游标不想第二次取值。有什么建议我该怎么办?这是活动生命周期的问题还是什么?这是我的密码。任何例子或建议都会对我很有帮助 public class DzienPierwszy extends AppCompatActivity { Button button;

我有两项活动。一个是从edittext更新数据库中的值,在第二个活动中,我希望将数据库中的值放入textview。第一次更新值时一切正常,但第二次无法更新textview,我在textview值中看到“0”。当我给出断点时,我发现我的游标不想第二次取值。有什么建议我该怎么办?这是活动生命周期的问题还是什么?这是我的密码。任何例子或建议都会对我很有帮助

public class DzienPierwszy extends AppCompatActivity {
    Button button;
    OpenHelper1 mDb;
    TextView pp1,pp2,pp3,s1,s2,s3,p1,p2,p3,pn,sr,pt,nd;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.dzien_treningu);

        p1 = (TextView) findViewById(R.id.p1);
        p2 = (TextView) findViewById(R.id.p2);
        p3 = (TextView) findViewById(R.id.p3);
        s1 = (TextView) findViewById(R.id.s1);
        s2 = (TextView) findViewById(R.id.s2);
        s3 = (TextView) findViewById(R.id.s3);
        pp1 = (TextView) findViewById(R.id.pp1);
        pp2 = (TextView) findViewById(R.id.pp2);
        pp3 = (TextView) findViewById(R.id.pp3);
        pn = (TextView) findViewById(R.id.pn);
        sr = (TextView) findViewById(R.id.sr);
        pt = (TextView) findViewById(R.id.pt);
        nd = (TextView) findViewById(R.id.nd);



        Intent i = getIntent();
        final String product = i.getStringExtra("cwiczenie ");
        int lol1=0;

        mDb = new OpenHelper1(this);

        mDb.open();
        // fetch data about 1 row in database table
        Cursor test = mDb.fetchOneCwiczenie(product);

        mDb.close();

        if( test != null && test.moveToFirst() ){
            //get value from column
            lol1 = test.getInt(test.getColumnIndex("score"));
            test.close();
        }


        p1.setText(String.valueOf(Math.round(lol1*0.55)));
        p2.setText(String.valueOf(Math.round(lol1*0.79)));
        p3.setText(String.valueOf(Math.round(lol1*0.67)));
        s1.setText(String.valueOf(Math.round(lol1*0.67)));
        s2.setText(String.valueOf(Math.round(lol1*0.91)));
        s3.setText(String.valueOf(Math.round(lol1*0.79)));
        pp1.setText(String.valueOf(Math.round(lol1*0.79)));
        pp2.setText(String.valueOf(Math.round(lol1*1.03)));
        pp3.setText(String.valueOf(Math.round(lol1*0.91)));

    }

    public void open(View view) {
        Intent intent = new Intent(getApplicationContext(),TestActivity.class);
        startActivity(intent);
    }
}




public class OpenHelper1{



private static final String TAG = "TreningDbAdapter";
public DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;
private final ContentResolver resolver =null;

private final Context mCtx;

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "menadzerCwiczen1";
public static final String TABLE_CWICZENIA = "cwiczenia";
public static final String KEY_ID = "_id";
public static final String KEY_NAME = "name";
public static final String KEY_KIND = "kind";
public static final String KEY_URL = "url";
public static final String KEY_SCORE = "score";
public static final String KEY_SERIES = "series";

static final String PROVIDER_NAME = "com.example.jacek.gympartner.SQLite";
static final String URL = "content://" + PROVIDER_NAME + "/cwiczenia";
static final Uri CONTENT_URI = Uri.parse(URL);

private static HashMap<String, String> CWICZENIA_PROJECTION_MAP;

static final int CWICZENIA = 1;
static final int CWICZENIE_ID = 2;

static final UriMatcher uriMatcher;
static{
    uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    uriMatcher.addURI(PROVIDER_NAME, "cwiczenie", CWICZENIA);
    uriMatcher.addURI(PROVIDER_NAME, "cwiczenia/#", CWICZENIE_ID);
}



private static final String DATABASE_CREATE =
        "CREATE TABLE if not exists " + TABLE_CWICZENIA + " (" +
                KEY_ID + " integer PRIMARY KEY autoincrement," +
                KEY_NAME + " TEXT," +
                KEY_KIND + " TEXT," +
                KEY_URL + " TEXT," +
                KEY_SCORE + " TEXT," +
                KEY_SERIES + " integer" +
                ");";
/*
@Override
public boolean onCreate() {

    Context context = getContext();
    DatabaseHelper dbHelper = new DatabaseHelper(context);



    mDb = dbHelper.getWritableDatabase();
    return (mDb == null)? false:true;
}

@Nullable
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
    return null;
}

@Nullable
@Override
public String getType(Uri uri) {
    return null;
}

@Nullable
@Override
public Uri insert(Uri uri, ContentValues values) {
    return null;
}

@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
    return 0;
}

@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
    return 0;
}
*/

private static class DatabaseHelper extends SQLiteOpenHelper {

    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.w(TAG, DATABASE_CREATE);




        db.execSQL(DATABASE_CREATE);
        db.execSQL("INSERT INTO "+TABLE_CWICZENIA+"("+KEY_NAME+","+KEY_KIND+","+KEY_URL+","+KEY_SCORE+","+KEY_SCORE+") VALUES('Pompki','Klatka piersiowa','https://www.youtube.com/watch?v=bwnidT3CB_Q',0,3)");
        db.execSQL("INSERT INTO "+TABLE_CWICZENIA+"("+KEY_NAME+","+KEY_KIND+","+KEY_URL+","+KEY_SCORE+","+KEY_SCORE+") VALUES('Pompki na poręczach','Triceps','https://www.youtube.com/watch?v=Cufsu3IHhCo',0,3)");
        db.execSQL("INSERT INTO "+TABLE_CWICZENIA+"("+KEY_NAME+","+KEY_KIND+","+KEY_URL+","+KEY_SCORE+","+KEY_SCORE+") VALUES('Odwrotne wiosłowanie','Plecy','https://www.youtube.com/watch?v=8qCn76yKhro',0,3)");
        db.execSQL("INSERT INTO "+TABLE_CWICZENIA+"("+KEY_NAME+","+KEY_KIND+","+KEY_URL+","+KEY_SCORE+","+KEY_SCORE+") VALUES('Spięcia brzucha leżąc','Górna część mięśni brzucha','https://www.youtube.com/watch?v=VVcm4LdmIwM',0,3)");
        db.execSQL("INSERT INTO "+TABLE_CWICZENIA+"("+KEY_NAME+","+KEY_KIND+","+KEY_URL+","+KEY_SCORE+","+KEY_SCORE+") VALUES('Unoszenie kolan','Dolna część mięśni brzucha','https://www.youtube.com/watch?v=Htx9Z8ZkiCg',0,3)");
        db.execSQL("INSERT INTO "+TABLE_CWICZENIA+"("+KEY_NAME+","+KEY_KIND+","+KEY_URL+","+KEY_SCORE+","+KEY_SCORE+") VALUES('Skręty tułowia','Mięśnie skośne brzucha','https://www.youtube.com/watch?v=i7smKA3mgBU',0,3)");
        db.execSQL("INSERT INTO "+TABLE_CWICZENIA+"("+KEY_NAME+","+KEY_KIND+","+KEY_URL+","+KEY_SCORE+","+KEY_SCORE+") VALUES('Przysiady','Uda','https://www.youtube.com/watch?v=NEduXlZ8zSk&t',0,3)");
        db.execSQL("INSERT INTO "+TABLE_CWICZENIA+"("+KEY_NAME+","+KEY_KIND+","+KEY_URL+","+KEY_SCORE+","+KEY_SCORE+") VALUES('Wspięcia na palce','Mięśnie łydek','https://www.youtube.com/watch?v=Wri0VppFWCY',0,3)");
        db.execSQL("INSERT INTO "+TABLE_CWICZENIA+"("+KEY_NAME+","+KEY_KIND+","+KEY_URL+","+KEY_SCORE+","+KEY_SCORE+") VALUES('Podciąganie na drążku','Mięśnie łydek','https://www.youtube.com/watch?v=7hM1iriAxx8',0,3)");


    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_CWICZENIA);

        onCreate(db);
    }



}

public  OpenHelper1(Context ctx) {
    this.mCtx = ctx;
}

public OpenHelper1 open() throws SQLException {
    mDbHelper = new DatabaseHelper(mCtx);
    mDb = mDbHelper.getWritableDatabase();
    return this;
}

public OpenHelper1 read() throws SQLException {
    mDbHelper = new DatabaseHelper(mCtx);
    mDb = mDbHelper.getReadableDatabase();
    return this;
}

public void close() {
    if (mDbHelper != null) {
        mDbHelper.close();
    }
}

public long createCwiczenie(String name,
                          String kind,
                          String url,
                          int score,
                          int series) {
    mDbHelper.getWritableDatabase();

    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_NAME, name);
    initialValues.put(KEY_KIND, kind);
    initialValues.put(KEY_URL, url);
    initialValues.put(KEY_SCORE, score);
    initialValues.put(KEY_SERIES, series);

    return mDb.insert(TABLE_CWICZENIA, null, initialValues);
}


public void deleteCwiczenie(String name) {
    mDb.execSQL("DELETE FROM " + TABLE_CWICZENIA + " WHERE " + KEY_NAME + "=\"" + name + "\";" );
}



public void updateScore1(Uri uri,String name, int wynik) {
    String str = "UPDATE "+TABLE_CWICZENIA+" SET "+KEY_SCORE+" = "+wynik+" WHERE "+KEY_NAME+" = '"+name+"'";
    mDb.execSQL(str);
}


public void updateScore(String name, int wynik) {
    String str = "UPDATE "+TABLE_CWICZENIA+" SET "+KEY_SCORE+" = "+wynik+" WHERE "+KEY_NAME+" = '"+name+"'";
    mDb.execSQL(str);
}
public boolean deleteAllCwiczenia() {

    int doneDelete = 0;
    doneDelete = mDb.delete(TABLE_CWICZENIA, null , null);
    Log.w(TAG, Integer.toString(doneDelete));
    return doneDelete > 0;

}

public Cursor fetchCwiczeniaByName(String inputText) throws SQLException {
    Log.w(TAG, inputText);
    Cursor mCursor = null;
    if (inputText == null  ||  inputText.length () == 0)  {
        mCursor = mDb.query(TABLE_CWICZENIA, new String[] {KEY_ID,
                        KEY_NAME, KEY_KIND, KEY_URL, KEY_SCORE, KEY_SERIES},
                null, null, null, null, null);

    }
    else {
        mCursor = mDb.query(true, TABLE_CWICZENIA, new String[] {KEY_ID,
                        KEY_NAME, KEY_KIND, KEY_URL, KEY_SCORE, KEY_SERIES},
                KEY_NAME + " like '%" + inputText + "%'", null,
                null, null, null, null);
    }
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;

}

public Cursor fetchAllcwiczenia() {

    Cursor mCursor = mDb.query(TABLE_CWICZENIA, new String[] {KEY_ID,
                    KEY_NAME, KEY_KIND, KEY_URL, KEY_SCORE, KEY_SERIES},
            null, null, null, null, null);

    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

public Cursor fetchOneCwiczenie(String name) {

    String query = "SELECT * FROM " + TABLE_CWICZENIA + " WHERE name='"+name+"'";

    Cursor c = mDb.rawQuery(query,null);


    if(c != null) {
        c.moveToFirst();
    }
    return c;
}

public Cursor fetchOneCwiczenie1(Uri uri,String name) {
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
    qb.setTables(TABLE_CWICZENIA);



    String query = "SELECT * FROM " + TABLE_CWICZENIA + " WHERE name='"+name+"'";

    Cursor c = mDb.rawQuery(query,null);


    if (c != null) {
       // c.setNotificationUri(getContext().getContentResolver(), ContactsContract.AUTHORITY_URI);
    }

    return c;
}




public void insertSomeCwiczenia() {
    createCwiczenie("Pompki","Klatka piersiowa","https://www.youtube.com/watch?v=bwnidT3CB_Q",20,3);
    createCwiczenie("Pompki na poręczach","Triceps","https://www.youtube.com/watch?v=Cufsu3IHhCo",0,3);
    createCwiczenie("Odwrotne wiosłowanie","Plecy","https://www.youtube.com/watch?v=8qCn76yKhro",0,3);
    createCwiczenie("Spięcia brzucha leżąc","Górna część mięśni brzucha","https://www.youtube.com/watch?v=VVcm4LdmIwM",0,3);
    createCwiczenie("Unoszenie kolan","Dolna część mięśni brzucha","https://www.youtube.com/watch?v=Htx9Z8ZkiCg",0,3);
    createCwiczenie("Skręty tułowia","Mięśnie skośne brzucha","https://www.youtube.com/watch?v=i7smKA3mgBU",0,3);
    createCwiczenie("Przysiady","Uda","https://www.youtube.com/watch?v=NEduXlZ8zSk&t",0,3);
    createCwiczenie("Wspięcia na palce","Mięśnie łydek","https://www.youtube.com/watch?v=Wri0VppFWCY",0,3);
    createCwiczenie("Podciąganie na drążku","Mięśnie łydek","https://www.youtube.com/watch?v=7hM1iriAxx8",0,3);
}


}

public class TestActivity extends AppCompatActivity {
TextView textView;
EditText editText;
Button button,button1;
OpenHelper1 mDb;


@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.test_layout);

    textView = (TextView) findViewById(R.id.polecenie);
    editText = (EditText) findViewById(R.id.wartosc);
    button = (Button) findViewById(R.id.treningactivity);
    button1 = (Button) findViewById(R.id.zapisz);
    //button2 = (Button) findViewById(R.id.button);



    mDb = new OpenHelper1(this);



    Intent i = getIntent();
    // getting attached intent data
    final String product = i.getStringExtra("cwiczenie ");



    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int wynik = Integer.parseInt(editText.getText().toString());
            mDb.open();
            mDb.updateScore(product,wynik);


            mDb.close();


        }
    });

    /*
    button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mDb.open();
            Cursor t = mDb.fetchOneCwiczenie(product);
            int c = t.getInt(t.getColumnIndex("score"));
            String k = Integer.toString(c);
            textView1.setText(k);
            mDb.close();

        }
    });
    */

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(getApplicationContext().getApplicationContext(), DzienPierwszy.class);
            i.putExtra("cwiczenie ", product);

            startActivity(i);
        }
    });



}
}
public类DzienPierwszy扩展了AppCompative活动{
按钮;
OpenHelper1 mDb;
文本视图pp1、pp2、pp3、s1、s2、s3、p1、p2、p3、pn、sr、pt、nd;
@凌驾
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
这个.setContentView(R.layout.dzien_treningu);
p1=(TextView)findViewById(R.id.p1);
p2=(TextView)findViewById(R.id.p2);
p3=(TextView)findViewById(R.id.p3);
s1=(TextView)findViewById(R.id.s1);
s2=(TextView)findViewById(R.id.s2);
s3=(TextView)findViewById(R.id.s3);
pp1=(TextView)findViewById(R.id.pp1);
pp2=(TextView)findViewById(R.id.pp2);
pp3=(TextView)findViewById(R.id.pp3);
pn=(TextView)findViewById(R.id.pn);
sr=(TextView)findViewById(R.id.sr);
pt=(TextView)findViewById(R.id.pt);
nd=(TextView)findViewById(R.id.nd);
Intent i=getIntent();
最终字符串产品=i.getStringExtra(“cwiczenie”);
int-1=0;
mDb=新的OpenHelper1(此);
mDb.open();
//获取数据库表中约1行的数据
游标测试=mDb.fetchOneCwiczenie(产品);
mDb.close();
if(test!=null&&test.moveToFirst()){
//从列中获取值
lol1=test.getInt(test.getColumnIndex(“score”);
test.close();
}
p1.setText(String.valueOf(Math.round(lol1*0.55));
p2.setText(String.valueOf(Math.round(lol1*0.79));
p3.setText(String.valueOf(Math.round(lol1*0.67));
s1.setText(String.valueOf(Math.round(lol1*0.67));
s2.setText(String.valueOf(Math.round(lol1*0.91));
s3.setText(String.valueOf(Math.round(lol1*0.79));
setText(String.valueOf(Math.round(lol1*0.79));
setText(String.valueOf(Math.round(lol1*1.03));
setText(String.valueOf(Math.round(lol1*0.91));
}
公共作废打开(视图){
Intent Intent=newintent(getApplicationContext(),TestActivity.class);
星触觉(意向);
}
}
公共类OpenHelper1{
私有静态最终字符串标记=“TreningDbAdapter”;
公共数据库助手mDbHelper;
私有数据库mDb;
私有最终ContentResolver解析器=null;
私有最终上下文mCtx;
私有静态最终int数据库_VERSION=1;
私有静态最终字符串数据库\u NAME=“menadzerCwiczen1”;
公共静态最终字符串表\u CWICZENIA=“CWICZENIA”;
公共静态最终字符串键\u ID=“\u ID”;
公共静态最终字符串键\u NAME=“NAME”;
公共静态最终字符串键\u KIND=“KIND”;
公共静态最终字符串键\u URL=“URL”;
公共静态最终字符串键\u SCORE=“SCORE”;
公共静态最终字符串键\u SERIES=“SERIES”;
静态最终字符串提供程序\u NAME=“com.example.jacek.gympartner.SQLite”;
静态最终字符串URL=“content://”+PROVIDER\u NAME+“/cwiczenia”;
静态最终Uri内容\u Uri=Uri.parse(URL);
私有静态HashMap-CWICZENIA\u投影图;
静态最终int CWICZENIA=1;
静态最终int CWICZENIE_ID=2;
静态最终UriMatcher UriMatcher;
静止的{
uriMatcher=新的uriMatcher(uriMatcher.NO_匹配);
addURI(提供者名称,“cwiczenie”,CWICZENIA);
addURI(提供者名称,“cwiczenia/”,CWICZENIE\u ID);
}
私有静态最终字符串数据库\u创建=
“如果不存在,则创建表”+表\u CWICZENIA+”(“+
KEY_ID+“整数主键自动递增,”+
按键名称+“文本,”+
按键类型+“文本,”+
关键字URL+“文本,”+
关键点分数+文本+
键_系列+“整数”+
");";
/*
@凌驾
公共布尔onCreate(){
Context=getContext();
DatabaseHelper dbHelper=新的DatabaseHelper(上下文);
mDb=dbHelper.getWritableDatabase();
返回值(mDb==null)?false:true;
}
@可空
@凌驾
公共游标查询(Uri Uri、字符串[]投影、字符串选择、字符串[]selectionArgs、字符串排序器){
返回null;
}
@可空
@凌驾
公共字符串getType(Uri){
返回null;
}
@可空
@凌驾
公共Uri插入(Uri、ContentValues){
返回null;
}
@凌驾
public int delete(Uri、字符串选择、字符串[]selectionArgs){
返回0;
}
@凌驾
公共int更新(Uri、ContentValues值、字符串选择、字符串[]selectionArgs){
返回0;
}
*/
私有静态类DatabaseHelper扩展了SQLiteOpenHelper{
DatabaseHelper(上下文){
super(上下文、数据库名称、null、数据库版本);
}
@凌驾
public void onCreate(SQLiteDatabase db){
Log.w(标记、数据库创建);
execSQL(创建数据库);
db.execSQL(“插入到“+表”+”(“+KEY\u NAME+”、“+KEY\u KIND+”、“+KEY\u URL+”、“+KEY\u SCORE+”、“+KEY\u SCORE+”)值('Pompki'、'Klatka piersiowa'、'https://www.youtube.com/watch?v=bwnidT3CB_Q',0,3)");
db.execSQL(“插入到“+表”+”(“+键名称+”,“+键种类+”,“+键URL+”,“+键分数+”,“+键分数+”)值('Pompki na poręczach','Triceps','https://www.youtube.com/watch?v=Cufsu3IHhCo',0,3)");
db.execSQL(“插入到“+表”+”(“+KEY\u NAME+”,“+KEY\u KIND+”,“+KEY\u URL+”,“+KEY\u SCORE+”,“+KEY\u SCORE+”)值('Odwrotne wiosłowanie','Plecy','https://www.youtube.com/watch?v=8qCn76yKhro',0,3