使用编辑文本和按钮将数据存储在数据库中

时间:2012-12-13 05:01:52

标签: android android-layout android-widget android-sqlite

您好我正在尝试使用我创建的EditText和Button将数据插入数据库。我被困在代码的Activity部分。我无法继续如何为Button和EditText部分编写Onclick action部分请帮助我。我是android的新手

DBAdapter.java

package com.example.database1;

public class DBAdapter 
{
    public static final String KEY_ROWID = "_id";
    public static final String KEY_ISBN = "isbn";
    public static final String KEY_TITLE = "title";
    public static final String KEY_PUBLISHER = "publisher";    
    private static final String TAG = "DBAdapter";

    private static final String DATABASE_NAME = "books";
    private static final String DATABASE_TABLE = "titles";
    private static final int DATABASE_VERSION = 1;

    private static final String DATABASE_CREATE =
        "create table titles (_id integer primary key autoincrement, "
        + "isbn text not null, title text not null, " 
        + "publisher text not null);";

    private final Context context; 

    private DatabaseHelper DBHelper;
    private SQLiteDatabase db;

    public DBAdapter(Context ctx) 
    {
        this.context = ctx;
        DBHelper = new DatabaseHelper(context);
    }

    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) 
        {
            Log.w(TAG, "Upgrading database from version " + oldVersion 
                    + " to "
                    + newVersion + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS titles");
            onCreate(db);
        }
    }    

    //---opens the database---
    public DBAdapter open() throws SQLException 
    {
        db = DBHelper.getWritableDatabase();
        return this;
    }

    //---closes the database---    
    public void close() 
    {
        DBHelper.close();
    }

    //---insert a title into the database---
    public long insertTitle(String isbn, String title, String publisher) 
    {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_ISBN, isbn);
        initialValues.put(KEY_TITLE, title);
        initialValues.put(KEY_PUBLISHER, publisher);
        return db.insert(DATABASE_TABLE, null, initialValues);
    }

    //---deletes a particular title---
    public boolean deleteTitle(long rowId) 
    {
        return db.delete(DATABASE_TABLE, KEY_ROWID + 
                "=" + rowId, null) > 0;
    }

    //---retrieves all the titles---
    public Cursor getAllTitles() 
    {
        return db.query(DATABASE_TABLE, new String[] {
                KEY_ROWID, 
                KEY_ISBN,
                KEY_TITLE,
                KEY_PUBLISHER
            }, 
            null, 
            null, 
            null, 
            null, 
            null);
    }

    //---retrieves a particular title---
    public Cursor getTitle(long rowId) throws SQLException 
    {
        Cursor mCursor =
            db.query(true, DATABASE_TABLE, new String[] {
                                KEY_ROWID,
                                KEY_ISBN, 
                                KEY_TITLE,
                                KEY_PUBLISHER
                    }, 
                    KEY_ROWID + "=" + rowId, 
                    null,
                    null, 
                    null, 
                    null, 
                    null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }

    //---updates a title---
    public boolean updateTitle(long rowId, String isbn, String title, String publisher) 
    {
        ContentValues args = new ContentValues();
        args.put(KEY_ISBN, isbn);
        args.put(KEY_TITLE, title);
        args.put(KEY_PUBLISHER, publisher);
        return db.update(DATABASE_TABLE, args, 
                     KEY_ROWID + "=" + rowId, null) > 0;
    }
}

DatabaseActivity.java

package com.example.database1;

public class DatabaseActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_database);
        DBAdapter db = new DBAdapter(this);
        db.open();
    } 
}

activity_database.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <EditText
        android:id="@+id/edit1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <EditText
        android:id="@+id/edit2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <EditText
        android:id="@+id/edit3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button 
        android:id="@+id/submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"  />
</LinearLayout>

4 个答案:

答案 0 :(得分:2)

将代码更改为在按钮单击时在数据库中插入编辑文本值:

public class DatabaseActivity extends Activity {
 DBAdapter db;
Button submitbtn;
EditText edit1,edit2,edit3;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_database);
    db=new DBAdapter(this);
   submitbtn = (Button) findViewById(R.id.submit);
   edit1 = (EditText) findViewById(R.id.edit1);
   edit2 = (EditText) findViewById(R.id.edit2);
   edit3 = (EditText) findViewById(R.id.edit3);
    db.open();

    submitbtn.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v)
        {
                String steedtone=edit1.getText().toString();
                String steedttwo=edit2.getText().toString();
                String steedtthree=edit3.getText().toString();

                long result=db.insertTitle(steedtone,steedttwo,steedtthree);
        }
         });
  } 
}

答案 1 :(得分:1)

在调用setContentView()之后,这将进入你的onCreate()。

Button btn = (Button) findViewById(R.id.btnId);
EditText edtTxt = (EditText) findViewById(R.id.edtId);

btn.setOnClickListener(new OnClickListener() {

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

            }
        });

public void insertDataInDb() {
        // TODO Auto-generated method stub
        String str = edtTxt.getText().toString();
        //Code for insertion
    }

答案 2 :(得分:1)

检查以下代码。

package com.example.database1;
import android.os.Bundle;
import android.app.Activity;
import android.database.Cursor;
import android.view.Menu;
import android.widget.Toast;

public class DatabaseActivity extends Activity {

DBAdapter db;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_database);
    db = new DBAdapter(this);
    db.open();

    Button btn = (Button) findViewById(R.id.btnId);
    EditText edtTxt = (EditText) findViewById(R.id.edtId);

    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String name = edtTxt.getText().toString();
            try{
            insertTitle("ISBN",""+name,"publisar");
            }catch(Exception e){
              Log.d("error-->","insert data-->"+e.getMassage().toString());
              }

        }
    });
  } 
  }

答案 3 :(得分:1)

public class DatabaseActivity extends Activity {
    EditText edit1,edit2,edit3;
    Button submit;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         final DBAdapter db = new DBAdapter(this);
         db.open();
         edit1=(EditText)findViewById(R.id.edit1);
         edit2=(EditText)findViewById(R.id.edit2);
         edit3=(EditText)findViewById(R.id.edit3);
         submit=(Button)findViewById(R.id.submit);
        submit.setOnClickListener(new OnClickListener(){


            @Override
            public void onClick(View v) {
                String editText1=edit1.getText().toString();
                String editText2=edit2.getText().toString();
                String editText3=edit3.getText().toString();
                long result=db.insertTitle(editText1, editText2, editText3);
                Toast.makeText(MainActivity.this,"DataSaved",Toast.LENGTH_LONG).show();// TODO Auto-generated method stub

            }
        });
    }

只需将其粘贴到您的数据库活动中即可看到神奇的欢呼声。