2012-10-13 3 views
2

Je suis impatient d'ajouter un nouvel enregistrement dans ma base de données sqlite. Je ne reçois aucune erreur mais aussi pas vu n'importe quel type d'enregistrement dans la base de données quand je vois la base de données utilisant le manager sqlite suivant est le code que j'ai écrit. plz m'aider à sortir de ce problème.Impossible d'ajouter un nouvel enregistrement à la base de données sqlite android

suivant est mon code de gestionnaire de base de données ..

enter code here 
import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 
import android.widget.Toast; 

public class DatabaseHandler extends SQLiteOpenHelper 
{ 

private static final int DATABASE_VERSON=1; 
private static final String DATABASE_NAME="Info_manager"; 
private static final String TABLE_DETAILS = "info_detail"; 

// Contacts Table Columns names 
private static final String KEY_ID = "id"; 
private static final String KEY_FNAME = "f_name"; 
private static final String KEY_LNAME = "l_name"; 
private static final String KEY_PH_NO = "c_num"; 
private static final String KEY_EMAIL = "e_mail"; 



public DatabaseHandler(Context context) 
{ 
    super(context,null , null, 1); 
} 

@Override 
public void onCreate(SQLiteDatabase db) 
{ 
    //db = this.getWritableDatabase(); 
    ///System.out.println("----333------"); 
    String CREATE_DETAILS_TABLE = "CREATE TABLE " + TABLE_DETAILS 
    + "(" 
    + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_FNAME + " TEXT," + KEY_LNAME + " TEXT," + KEY_PH_NO + " TEXT," + KEY_EMAIL + " TEXT " + ")"; 

    db.execSQL(CREATE_DETAILS_TABLE); 
    ///System.out.println("----444------"); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
{ 
    // Drop older table if existed 
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_DETAILS); 
    // Create tables again 
    onCreate(db); 

} 


// Adding new contact 
void addContact(Contact contact) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    // ContentValues values = new ContentValues(); 

    String sql; 
    sql = "INSERT INTO info_detail (f_name, l_name, c_num, e_mail) " + 
    "VALUES ('" + contact.getfName().toString() + "', '" + contact.getlName().toString() + "', '" + contact.getContactNumber().toString()+ "', '" + contact.getEmailAddress().toString() +"')"; 

    db.execSQL(sql); 

    /*values.put(KEY_FNAME, contact.getfName()); 
    values.put(KEY_LNAME, contact.getlName()); 
    values.put(KEY_PH_NO, contact.getContactNumber()); 
    values.put(KEY_EMAIL, contact.getEmailAddress());*/ 
    // Inserting Row 
    System.out.print("----inserting----"); 
    //db.insert(TABLE_DETAILS, null, values); 

    System.out.print("----inserted----"); 
    db.close(); 
} 

}

et qui suit est l'activité à partir de laquelle j'ai appelé gestionnaire

public class SQLitelActivity extends Activity implements OnClickListener 
{ 

EditText fname,lname,con_num,email_adr; 
Button savebtn,viewbtn; 
DatabaseHandler db; 
//SQLiteDatabase db; 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_sqlitel); 

    fname=(EditText)findViewById(R.id.fname); 
    lname=(EditText)findViewById(R.id.lname); 
    con_num=(EditText)findViewById(R.id.cnumber); 
    email_adr=(EditText)findViewById(R.id.email); 

    savebtn=(Button)findViewById(R.id.save); 
    viewbtn=(Button)findViewById(R.id.view); 

    db=new DatabaseHandler(this); 

    savebtn.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      //System.out.println("----111------"); 
      db.addContact(new Contact(fname.getText().toString() 
        , lname.getText().toString(),con_num.getText().toString(),email_adr.getText().toString())); 
     // System.out.println("----222------"); 
     } 
    } 
    ); 

Répondre

3

ici est code avec modification,

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

vous manquez le nom de base de données ici super constructeur.

et je suis en utilisant la méthode suivante pour ajouter un contact à la base de données,

// Adding new contact 
    void addContact(Contact contact) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(KEY_FNAME, contact.getfName().toString()); // Contact First Name 
     values.put(KEY_LNAME, contact.getlName().toString()); // Contact Last Name 
     values.put(KEY_PH_NO, contact.getContactNumber().toString()); // Contact Number 
     values.put(KEY_EMAIL, contact.getEmailAddress().toString()); // Contact Email 

     // Inserting Row 
     db.insert(TABLE_CONTACTS, null, values); 
     db.close(); // Closing database connection 
    } 

J'espère que cela vous aidera. Merci.

+0

Cela fonctionne ... Merci –

Questions connexes