2012-09-01 64 views
0

我是新的android,在我的应用程序中,我需要创建数据库,当用户在EditText中写入一些内容时,我需要将它保存到数据库中,但实际上我不知道我该怎么做。所以请有人帮我out.i已经创建提交按钮来保存数据,现在我需要创建一个数据库。如何在有人在android中写入EditText时创建数据库并将数据保存到数据库中?

这里我给我的一个名为“Invitation.java”活动类,其中包含

  package com.ggit.trip.caster; 

    import android.content.Intent; 
    import android.os.Bundle; 
    import android.util.Log; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.widget.Button; 
    import android.widget.EditText; 

    public class Invitation extends AppBaseActivity { 

protected static final String Tag = "Invitation Activity"; 

private Button submit2; 
private Button exit2; 

private EditText Edit1; 
private EditText Edit2; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.invitation); 

    registerBaseActivityReceiver(); 

    submit2 = (Button) findViewById(R.id.sub2_button1); 
    exit2=(Button)findViewById(R.id.button2); 

    Edit1 = (EditText) findViewById(R.id.editText1); 
    Edit2 = (EditText) findViewById(R.id.editText2); 

    submit2.setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 

      Log.d(Tag, "EditText : " + Edit1.getText().toString()); 
      Log.d(Tag, "EditText : " + Edit2.getText().toString()); 

      Intent intent = new Intent(getApplicationContext(), 
        Registration.class); 
      startActivity(intent); 
     } 
    }); 

    exit2.setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 
      closeAllActivities(); 
        } 
    }); 
} 

public void onDestroy() { 

    super.onDestroy(); 
    unRegisterBaseActivityReceiver(); 
} 

    } 

现在这里命名Invitation.jave类XML布局的一个“invitation.xml”包含

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/sea_01" 
android:orientation="vertical" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView3" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="28dp" 
    android:text="E-mail" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="160dp" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView1" 
    android:layout_centerHorizontal="true" 
    android:background="@drawable/rounded_edittext" 
    android:ems="10" 
    android:hint="  email address" 
    android:inputType="textEmailAddress" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textView1" 
    android:layout_below="@+id/editText1" 
    android:text="Phone" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<EditText 
    android:id="@+id/editText2" 
    android:layout_width="160dp" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/editText1" 
    android:layout_below="@+id/textView2" 
    android:background="@drawable/rounded_edittext" 
    android:ems="10" 
    android:hint=" phone number" 
    android:inputType="phone" /> 

<Button 
    android:id="@+id/sub2_button1" 
    android:layout_width="100dp" 
    android:layout_height="45dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignRight="@+id/textView1" 
    android:layout_marginRight="27dp" 
    android:background="@drawable/gloss_nine_patch" 
    android:text="Send Invitation" /> 

<Button 
    android:id="@+id/button2" 
    android:layout_width="100dp" 
    android:layout_height="45dp" 
    android:layout_alignLeft="@+id/textView2" 
    android:layout_alignParentBottom="true" 
    android:layout_marginLeft="32dp" 
    android:background="@drawable/gloss_nine_patch" 
    android:text="Exit" /> 

</RelativeLayout> 

现在我需要将这两个数据保存到数据库中EditText.please写一个适当的或完整的活动类,因为ima新人。谢谢。


DataHelper.java为@Naser

package i.am.arnob; 

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 

public class DataHelper extends SQLiteOpenHelper{ 

//database version, current ver is 1. 
public static final int DATABASE_VER=1; 

//database Name or db name 
public static final String DATABASE_NAME="dataPerson"; 

//table Name, table person 
public static final String TABLE_PERSON="person"; 

//table fields name,fist name,email and domain 
//public static final String KEY_NAME="name"; 
//public static final String KEY_FIRST_NAME="first_name"; 
public static final String KEY_EMAIL="email"; 
public static final String KEY_DOMAIN="domain"; 

public DataHelper(Context context, String name, CursorFactory factory, 
     int version) { 
    super(context, name, factory, version); 
    // TODO Auto-generated constructor stub 
} 
@Override 
public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 
    //creating string sqlTable for creating a table 
    String sqlTable = "create table " +TABLE_PERSON+ "("/* +KEY_NAME+ " text," +KEY_FIRST_NAME+ " text," */ +KEY_EMAIL+ " text," +KEY_DOMAIN+ " text);"; 
    //db.execSQL() will execute string which we provide and will create a table with given table name and fields. 
    db.execSQL(sqlTable); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 

} 

} 
+0

你试图对sqlite的或在服务器数据库中创建的Android –

+0

数据库?明确... – nKandel

+0

是的,我想创建一个连接数据库@nick – Aces

回答

0

这里是我的代码:

这是辅助类:

public class DataHelper extends SQLiteOpenHelper{ 

    //database version, current ver is 1. 
    public static final int DATABASE_VER=1; 

    //database Name or db name 
    public static final String DATABASE_NAME="dataPerson"; 

    //table Name, table person 
    public static final String TABLE_PERSON="person"; 

    //table fields name,fist name,email and domain 
    public static final String KEY_NAME="name"; 
    public static final String KEY_FIRST_NAME="first_name"; 
    public static final String KEY_EMAIL="email"; 
    public static final String KEY_DOMAIN="domain"; 



    public DataHelper(Context context, String name, CursorFactory factory, 
      int version) { 
     super(context, name, factory, version); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     //creating string sqlTable for creating a table 
     String sqlTable = "create table " +TABLE_PERSON+ "(" +KEY_NAME+ " text," +KEY_FIRST_NAME+ " text," +KEY_EMAIL+ 
       " text," +KEY_DOMAIN+ " text);"; 
     //db.execSQL() will execute string which we provide and will create a table with given table name and fields. 
     db.execSQL(sqlTable); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 

    } 

} 

这是您的保存按钮:

mbtnSave.setOnClickListener(new OnClickListener() { 

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

       // getting database for reading/writing purpose 
       db = helper.getWritableDatabase(); 

       // getting data from edit text to string variables 
       String name = medtName.getText().toString().trim(); 
       String firstName = medtFirstName.getText().toString().trim(); 
       String email = medtEmail.getText().toString().trim(); 
       String domain = medtDomain.getText().toString().trim(); 

       // checking for empty fields 
       if (!name.equals("") && !firstName.equals("") 
         && !email.equals("") && !domain.equals("")) { 

        // contentValues will add data into key value pair which 
        // will later store in db 
        ContentValues values = new ContentValues(); 

        values.put(DataHelper.KEY_NAME, name); 
        values.put(DataHelper.KEY_FIRST_NAME, firstName); 
        values.put(DataHelper.KEY_EMAIL, email); 
        values.put(DataHelper.KEY_DOMAIN, domain); 

        // insert query will insert data in database with 
        // contentValues pair. 
        db.insert(DataHelper.TABLE_PERSON, null, values); 

        toast("Added!"); 

        // db.close(); 
        // helper.close(); 
        // created user defined method to clean the text fields 
        clean(); 

        // }else{toast("proper name");} 
       } else { 

        toast("Fields either empty or not proper"); 
       } 

       // closing the database connection 
       db.close(); 
      } 
     }); 
+0

谢谢你,但你的setOnClickListener包含一些错误 - 'db','helper','clean','toast'它说 - “db无法解析”,for吐司&清理它显示 - “方法干净()&toast()是未定义的类型新View.OnCLickListener(){}”。所以我可以解决这个错误?请帮帮我。 @Naser – Aces

+0

'private SQLiteDatabase db; \t private DataHelper helper;' Toast()和clean()是Toast()的用户定义方法,并清除文本字段。您可以删除这些方法,只需编写Toast()。 @arnob – NaserShaikh

+0

谢谢,但现在当我点击提交按钮时,它会抛出一个异常,说“应用程序已经意外停止”,并且日志显示NullPionterException。在这里,我再次给你我的Java课程,你帮助我,请运行一次,请告诉我什么是错的。再次感谢你@Naser – Aces

1

在这里,我有简单的创建类的所有功能

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; 
import android.util.Log; 


public class DBAdapter { 

public static final String KEY_AOUTO = "_id"; 
public static final String KEY_ID_SONG = "id_song"; 
public static final String KEY_RATING_VALUE = "rating_value"; 

private static final String TAG = "DBAdapter"; 

private static final String DATABASE_NAME = "meadia_rating"; 
private static final String DATABASE_TABLE_TIME = "music_rating"; 

private static final int DATABASE_VERSION = 1; 

private static final String DATABASE_CREATE_TIME = "create table music_rating (_id integer primary key autoincrement," 
     + "id_song text not null,rating_value 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); 
    } 

    public void onCreate(SQLiteDatabase db) { 

     db.execSQL(DATABASE_CREATE_TIME); 

    } 

    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 Savedfiles"); 

     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 data into the database--- 
public long insert(String id_song, String rating_value) { 
    ContentValues initialValues = new ContentValues(); 

    initialValues.put(KEY_ID_SONG, id_song); 
    initialValues.put(KEY_RATING_VALUE, rating_value); 

    return db.insert(DATABASE_TABLE_TIME, null, initialValues); 
} 

// ---deletes a particular row--- 
public boolean delete(long rowId) { 
    return db.delete(DATABASE_TABLE_TIME, KEY_AOUTO + "=" + rowId, null) > 0; 
} 

// ---deletes all table data--- 
public void deleteAll(String table_name) { 
    SQLiteDatabase db = DBHelper.getWritableDatabase(); 
    db.delete(table_name, null, null); 
} 

// ---- Search database a particular text---- 
public Cursor getRating(String mSongId) throws SQLException { 


    Cursor mCursor = db.query(true, DATABASE_TABLE_TIME, new String[] { 
      KEY_AOUTO, KEY_ID_SONG, KEY_RATING_VALUE }, KEY_ID_SONG + "=" 
      + mSongId, null, null, null, null, null); 
    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 
    return mCursor; 
} 

// ---updates a title--- 
public boolean updateRate(String rowId, String mSongId, String rating_value) { 
    ContentValues args = new ContentValues(); 
    args.put(KEY_ID_SONG, mSongId); 
    args.put(KEY_RATING_VALUE, rating_value); 

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

} 
相关问题