как сохранить значения edittext в базе данных, а затем, как получить это обратно - PullRequest
1 голос
/ 29 апреля 2011

Я пытаюсь поместить значение из EditText в базу данных, а затем получить значение из этой базы данных.

Я попытался сохранить значения в базе данных при нажатии кнопки в упражнении следующим образом:

import android.app.Activity;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class hjhj extends Activity implements OnClickListener {
    private EditText txt,txt1;

    Button b;

    String nam;
    String ag;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        txt = (EditText) findViewById(R.id.EditText01);
        txt1= (EditText) findViewById(R.id.EditText02);
        b=(Button) this.findViewById(R.id.Button01);
        b.setOnClickListener(this);         
   }



    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        nam=txt.getText().toString();
        ag=txt1.getText().toString();

        new DetailsOpenHelper(this);

    }


}

DetailsOpenHelper:

import android.content.ContentValues;

import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class DetailsOpenHelper extends SQLiteOpenHelper{

    private static String DATABASE_NAME="employeedatabase";

    private static final int DATABASE_VERSION = 2;
    private static final String DETAILS_TABLE_NAME = "employeedetails";

    private static String nam;
    private static String ag;

    static String NAME=nam;
    static String AGE=ag;
    private String KEY_ROWID;

    private static final String DETAILS_TABLE_CREATE =
                "CREATE TABLE " + DETAILS_TABLE_NAME + " (" +
                NAME + " TEXT, " +
                AGE + " TEXT);";

    private SQLiteOpenHelper mSQL;
    private SQLiteDatabase db;



    public DetailsOpenHelper(hjhj hjhj){
        super(hjhj, DATABASE_NAME, null,DATABASE_VERSION );
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
         db.execSQL(DETAILS_TABLE_CREATE);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DETAILS_TABLE_IF_NOT_EXISTS");
        onCreate(db);
    }


      public void open() throws SQLException
        {
          DetailsOpenHelper mSQL = new DetailsOpenHelper(null);
            db = mSQL.getWritableDatabase();
         } 


    private void addDetails( String nam, String ag) {

            SQLiteDatabase db = mSQL.getWritableDatabase();
            ContentValues values = new ContentValues();
            values.put(NAME, nam);
            //values.put(TIME, System.currentTimeMillis());
            values.put(AGE, ag);
            db.insert(DETAILS_TABLE_NAME, null, values);
        }

      public Cursor getAllDetails() 
      {
          return db.query(DETAILS_TABLE_NAME, new String[] {
                  KEY_ROWID, 
                  NAME,
                  AGE  },  null, null, null, null, null, null);
      }   


      public boolean updateDetails(long rowId, String nam, 
              String ag) 
              {
                  ContentValues args = new ContentValues();
                  args.put(NAME, nam);
                  args.put(AGE, ag);

                  return db.update(DETAILS_TABLE_NAME, args, 
                                   KEY_ROWID + "=" + rowId, null) > 0;
              }

}

Я хочу сохранить и получить значения, когда нажимаю кнопку. Пожалуйста, кто-нибудь может мне помочь, если вы знаете об этом. Я много пробовал.

Кроме того, как просмотреть базу данных с помощью командной строки?

Ответы [ 5 ]

1 голос
/ 03 сентября 2011
ReminderDbAdopter.java (simply a java class)


package com.studentdemo;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class RemindersDbAdapter {

    private static class DatabaseHelper extends SQLiteOpenHelper { 
        DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION); 
        }
        @Override
        public void onCreate(SQLiteDatabase db) { 
        db.execSQL(DATABASE_CREATE); 
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion,
        int newVersion) { 
        // Not used, but you could upgrade the database with ALTER
        // Scripts
        }

        }


    private static final String DATABASE_NAME = "studinfo";
    private static final String DATABASE_TABLE = "student";
    private static final int DATABASE_VERSION = 1;
    public static final String USERNAME= "title";
    public static final String ROLLNUM = "id";
    private DatabaseHelper mDbHelper;
    private SQLiteDatabase mDb;
    private static final String DATABASE_CREATE =
    "create table " + DATABASE_TABLE + "("
    + ROLLNUM + " integer primary key autoincrement, "
    + USERNAME + " text not null);";
    private final Context mCtx;
    public RemindersDbAdapter(Context ctx) {
    this.mCtx = ctx;
    }
    public RemindersDbAdapter open() throws SQLException {
    mDbHelper = new DatabaseHelper(mCtx);
    mDb = mDbHelper.getWritableDatabase();
    return this;
    }
    public void close() {
    mDbHelper.close();
    }
    public long createReminder(String title) { 
    ContentValues initialValues = new ContentValues();
    initialValues.put(USERNAME, title);
    return mDb.insert(DATABASE_TABLE, null, initialValues);

    }
    public boolean deleteReminder(long rowId) {
    return
    mDb.delete(DATABASE_TABLE, ROLLNUM + "=" + rowId, null) > 0; 
    }
    public Cursor fetchAllReminders() { 
        return mDb.query(DATABASE_TABLE, new String[] {ROLLNUM,USERNAME}, null, null, null, null, null);
        }
        public Cursor fetchReminder(long rowId) throws SQLException { 
        Cursor mCursor =
        mDb.query(true, DATABASE_TABLE, new String[] {ROLLNUM,
        USERNAME, }, ROLLNUM + "=" +
        rowId, null,
        null, null, null, null);
        if (mCursor != null) {
        mCursor.moveToFirst();
        }
        return mCursor;
        }
        public boolean updateReminder(long rowId, String title) { 
        ContentValues args = new ContentValues();
        args.put(USERNAME, title);
        return
        mDb.update(DATABASE_TABLE, args,ROLLNUM + "=" + rowId, null) > 0;
        }
        // The SQLiteOpenHelper class was omitted for brevity
        // That code goes here.



}


ReminderEditActivity  (main activity)



package com.studentdemo;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class ReminderEditActivity extends Activity {
private RemindersDbAdapter mDbHelper;
private EditText mTitleText;
private Button mConfirmButton;
private Long mRowId;
@Override

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mDbHelper = new RemindersDbAdapter(this);
setContentView(R.layout.reminder_edit);
mTitleText = (EditText) findViewById(R.id.title);
setmConfirmButton((Button) findViewById(R.id.confirm));
mRowId = savedInstanceState != null 
? savedInstanceState.getLong(RemindersDbAdapter.ROLLNUM): null;
registerButtonListenersAndSetDefaultText();
}



private void registerButtonListenersAndSetDefaultText() {
    {
        mConfirmButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
            saveState(); 
            setResult(RESULT_OK); 
            Toast.makeText(ReminderEditActivity.this,
            getString(R.string.hello),
            Toast.LENGTH_SHORT).show();
            finish();
            }
            });
    }
    }








private void setRowIdFromIntent() {
if (mRowId == null) {
Bundle extras = getIntent().getExtras();
mRowId = extras != null
? extras.getLong(RemindersDbAdapter.ROLLNUM)
: null;
}
}
@Override
protected void onPause() {
super.onPause();
mDbHelper.close(); 
}
@Override
protected void onResume() { 
super.onResume();
mDbHelper.open(); 
setRowIdFromIntent(); 
populateFields(); 
}
// Date picker, button click events, and buttonText updating, createDialog
// left out for brevity
// they normally go here ...
private void populateFields() { 
if (mRowId != null) {
Cursor reminder = mDbHelper.fetchReminder(mRowId); 
startManagingCursor(reminder); 
mTitleText.setText(reminder.getString(
reminder.getColumnIndexOrThrow(RemindersDbAdapter.USERNAME)));
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putLong(RemindersDbAdapter.ROLLNUM, mRowId);
}
private void saveState() {
String title = mTitleText.getText().toString();
if (mRowId == null) { 
long id = mDbHelper.createReminder(title);
if (id > 0) {
mRowId = id; 
}
} else {
mDbHelper.updateReminder(mRowId, title); 
}
}
public void setmConfirmButton(Button mConfirmButton) {
    this.mConfirmButton = mConfirmButton;
}
public Button getmConfirmButton() {
    return mConfirmButton;
}



}

reminder_edit.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:id="@+id/label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Write student information:"/>
    <EditText
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/editbox_background"
        android:layout_below="@id/label"/>
    <Button
        android:id="@+id/confirm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/title"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="10dip"
        android:text="save" />

</RelativeLayout>



then run the program
you can find the database 1.click start button in your window
2.choose run 
3.type adb shell(before it you set the path of adb in mycomputer properties C:\Program Files\Android\android-sdk-windows\platforms)
4.then type
cd data
cd data
cd your packagename
cd databases
sqlite3 studinfo
.tables
you find ur table name
0 голосов
/ 24 июня 2013

Хорошо. Я не знаю, получил ли ты свой ответ, но так как ты не пометил ни одного, я буду считать, что ты не получил. Если какой-либо ответ направил вас в правильном направлении, вы должны пометить его.

При условии, что в вашем коде нет ошибок (я не проверял).

  • Чтобы сохранить значения в базе данных: после этого кода: новый DetailsOpenHelper (this); в onClick вызовите функцию addDetails, используя переменные nam и ag. Только это.

  • Чтобы извлечь значения из базы данных: есть функция (getAllDetails), которая будет возвращать курсор, отображающий каждую запись в базе данных. Вы можете немного изменить его, чтобы выставить только одну запись. Дайте мне знать, если вы хотите знать об этом тоже. Используя функцию как она есть: после модификации выше:

    Курсор курсора = getAllDetails (); cursor.moveToFirst (); nam = cursor.getString (cursor.getColumnIndex ("nam")); ag = cursor.getString (cursor.getColumnIndex ("ag")); txt.setText (NAM); txt.setText (аг);

Это должно запустить ваш первый код, но я рекомендую вам научиться использовать listView для отображения результатов от курсора.

С наилучшими пожеланиями

0 голосов
/ 22 октября 2012

Очень легко ...

просто попробуйте этот код

final EditText edit_name=(EditText)findViewById(R.id.edit_name);
    final EditText edit_phone_numer=(EditText)findViewById(R.id.edit_phone_number);
    Button add_new=(Button)findViewById(R.id.button_add_new);
    Button saved_data=(Button)findViewById(R.id.button_saved_data);
    Button more_option=(Button)findViewById(R.id.button_delete);
    final Table tb=new Table(this);

    final String _name=edit_name.getText().toString();
    final String _phone_number=edit_phone_numer.getText().toString();
    System.out.println(_name);
    //Toast.makeText(getBaseContext(), _name, Toast.LENGTH_LONG).show();
    System.out.println(_phone_number);

    add_new.setOnClickListener(new View.OnClickListener()
    {

        public void onClick(View v) 
        {
            // TODO Auto-generated method stub
            edit_name.setText("");
            edit_phone_numer.setText("");
        }
    });

    saved_data.setOnClickListener(new View.OnClickListener()
    {

        public void onClick(View v) 
        {
            // TODO Auto-generated method stub
            tb.open();
            final String _name=edit_name.getText().toString();
            final String _phone_number=edit_phone_numer.getText().toString();
            System.out.println(_name);
            Toast.makeText(getBaseContext(), "Record Saved", Toast.LENGTH_LONG).show();
            System.out.println(_phone_number);
            tb.createemployee(_name, _phone_number);
            tb.delete("12");
            tb.close();
        }
    });
    more_option.setOnClickListener(new View.OnClickListener()
    {

        public void onClick(View v) 
        {
            // TODO Auto-generated method stub
            Intent i = new Intent(MainActivity.this, moreoption.class);
            startActivity(i);
        }
    });
0 голосов
/ 29 апреля 2011

Прежде всего, вызовите ваш класс Database с самим запуском приложения и установите соединение с ним.

Как я вижу, новый DetailsOpenHelper (this) вызывается из метода onClick (), это открывает соединениекаждый раз, когда вы нажимаете кнопку.

в методах Onclick () вызывают методы addDetails () и передают значение editText в этом.

Надеюсь, это будет работать в вашем случае.

0 голосов
/ 29 апреля 2011

Я выполнил эту задачу в одном из моих проектов для запоминания имени пользователя и пароля. В этом есть 2 EditView и ImageButton для запоминания имени пользователя и пароля. Когда пользователь нажимает кнопку «запомнить», его имя пользователя и пароль сохраняются в базе данных. Посмотрите код ниже и попробуйте получить помощь от этого:

    final ImageButton login=(ImageButton)findViewById(R.id.Login);
    final ImageButton register=(ImageButton)findViewById(R.id.Register);
    final ImageButton remember=(ImageButton)findViewById(R.id.remember);

this.myDbAdapter=new DBAdapter(this);
List<String> email = this.myDbAdapter.selectAll();

editText1=(EditText)findViewById(R.id.emailText);
editText2=(EditText)findViewById(R.id.passwordText);
if(!email.isEmpty()){
    remember.setBackgroundResource(R.drawable.checked);
    editText1.setText(email.get(0));
    editText2.setText(email.get(1));
}   

remember.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            if(Config.rememberLogin==0){
                remember.setBackgroundResource(R.drawable.checked);
                Config.rememberLogin=1;
                //myDbAdapter.deleteAll();

                myDbAdapter.insert(editText1.getText()+"",editText2.getText()+"");

            }
            else{
                     remember.setBackgroundResource(R.drawable.check_none);
                Config.rememberLogin=0;
                myDbAdapter.deleteAll();

            }       
        }
    });

где RememberLogin - это открытый статический член int класса Config , чтобы проверить, используется кнопка запоминания или нет. а вот функция selectAll () & deleteAll () класса myDbAdapter :

public void deleteAll() 
     {
       this.db.delete(TABLE_NAME, null, null);
      }

     public List<String> selectAll() {
          List<String> list = new ArrayList<String>();
          Cursor cursor = this.db.query(TABLE_NAME, new String[] {"email","password"}, 
            null, null, null, null,null);
          if (cursor.moveToFirst()) {
             do {
                list.add(cursor.getString(0));
                list.add(cursor.getString(1));
             } while (cursor.moveToNext());
          }
          if (cursor != null && !cursor.isClosed()) {
             cursor.close();
          }
          return list;
       }

Надеюсь, этот код поможет вам ...:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...