为什么不在SQLite中保存数据?

时间:2016-01-26 21:30:42

标签: android sqlite

我正在尝试通过内容提供程序从SQLite中保存表单中的数据,但它不起作用,Logcat中没有显示错误,但是当我使用此检查数据库时:

https://github.com/sanathp/DatabaseManager_For_Android

我可以看到数据没有保存... 这是使用ClickListener进行保存的按钮代码:

mSave.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(TextUtils.isEmpty(mdateEditText.getText().toString()) || TextUtils.isEmpty(mValueEditText.getText().toString())){
                Toast.makeText(getApplicationContext(), "Date and Value fields can not be empty.", Toast.LENGTH_LONG).show();
            }else{
                Toast.makeText(getApplicationContext(), "Form Saved.", Toast.LENGTH_LONG).show();

                mdateEditText.setText("");
                mValueEditText.setText("");
                mcommentaryEditText.setText("");
                setResult(RESULT_OK);
            }


        }
    });

这是我的代码从表单中获取数据:

private void saveForm(){
    //Retriving selected item from spinners
    String time = (String) mTime.getSelectedItem();
    String prepost= (String) mPrePost.getSelectedItem();
    String others= (String) mOthers.getSelectedItem();

    //Toast.makeText(getApplicationContext(), "SAVEFORM: TIME SELECCIONADO: " +time, Toast.LENGTH_LONG).show();
    //Toast.makeText(getApplicationContext(), "SAVEFORM: prepost SELECCIONADO: " +prepost, Toast.LENGTH_LONG).show();
    //Toast.makeText(getApplicationContext(), "SAVEFORM: OTHER SELECCIONADO: " +others, Toast.LENGTH_LONG).show();

    String dateEditText = mdateEditText.getText().toString();
    String commentaryEditText = mcommentaryEditText.getText().toString();
    String hemoValue = mValueEditText.getText().toString();

    //If form is empty then we can't save the form
    if(hemoValue.length() == 0 && dateEditText.length() == 0 ){
        return;
    }
    float hemoRealValue = Float.parseFloat(hemoValue);

    ContentValues values = new ContentValues();
    values.put(FormTable.COLUMN_DATE, dateEditText);
    values.put(FormTable.COLUMN_TIME, time);
    values.put(FormTable.COLUMN_PREPOST, prepost);
    values.put(FormTable.COLUMN_OTHERS,others);
    values.put(FormTable.COLUMN_VALUES,hemoRealValue);
    values.put(FormTable.COLUMN_COMMENTARY,commentaryEditText);
//
//        if(formUri==null){
        formUri = getContentResolver().insert(ContentProviderDB.CONTENT_URI,values);
//        }else{
//            getContentResolver().update(formUri,values,null,null);
//        }

这是使用insert方法保存数据的内容提供程序的代码:

@Nullable
@Override
public Uri insert(Uri uri, ContentValues values) {
    int uriType = sUriMatcher.match(uri);
    SQLiteDatabase db = sqlite.getWritableDatabase();
    long id=0;
    switch(uriType){

        case SINGLE_VALUE:
            id=db.insert(FormTable.TABLE_FORM,null,values);
            break;
        default:
            throw new IllegalArgumentException("Unknown Uri: " + uri);
    }
    getContext().getContentResolver().notifyChange(uri,null);
    return Uri.parse(BASE_PATH + "/" + id);
}

我正在做的一切都好,但它不是保存数据,可能是什么问题?非常感谢

1 个答案:

答案 0 :(得分:0)

根据您的代码,您必须在onClick函数中调用saveForm()

public void onClick(View v) {
            if(TextUtils.isEmpty(mdateEditText.getText().toString()) || TextUtils.isEmpty(mValueEditText.getText().toString())){
                Toast.makeText(getApplicationContext(), "Date and Value fields can not be empty.", Toast.LENGTH_LONG).show();
            }else{
                saveForm();
                Toast.makeText(getApplicationContext(), "Form Saved.", Toast.LENGTH_LONG).show();

                mdateEditText.setText("");
                mValueEditText.setText("");
                mcommentaryEditText.setText("");
                setResult(RESULT_OK);
            }


        }