2017-09-14 1 views
1

Le projet se compose de deux classes, l'une pour l'activité principale et l'autre pour la classe Database Helper qui étend la classe Sqliteopenhelper pour l'exécution de la requête sur la base de données. Le problème se produit lorsque le bouton Ajouter des données n'insère pas les données dans la base de données. Probablement, il y a quelque chose qui ne va pas avec la méthode 'insérer des données', que je suis incapable de comprendre. Ou s'agit-il d'autre chose?Base de données SQLite n'insérant pas de valeurs

MainActivity.java

public class MainActivity extends Activity { 
DatabaseHelper myDb; 
EditText editName,editF1,editF2,editF3,editF4,editF5; 
Button btnAddData; 
Button btnViewAll; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    myDb = new DatabaseHelper(this); 

    editName = (EditText)findViewById(R.id.editText_name); 
    editF1 = (EditText)findViewById(R.id.editText_F1); 
    editF2 = (EditText)findViewById(R.id.editText_F2); 
    editF3= (EditText)findViewById(R.id.editText_F3); 
    editF4= (EditText)findViewById(R.id.editText_F4); 
    editF5= (EditText)findViewById(R.id.editText_F5); 
    btnAddData = (Button)findViewById(R.id.button_add); 
    btnViewAll = (Button)findViewById(R.id.button_viewAll); 
    AddData(); 
    viewAll(); 
} 
public void AddData() { 
    btnAddData.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        boolean isInserted = 
myDb.insertData(editName.getText().toString(), editF1.getText().toString(), 
editF2.getText().toString(), editF3.getText().toString(), 
editF4.getText().toString(), editF5.getText().toString()); 
        if(isInserted == true) 
         Toast.makeText(MainActivity.this,"Data 
Inserted",Toast.LENGTH_LONG).show(); 
        else 
         Toast.makeText(MainActivity.this,"Data not 
Inserted",Toast.LENGTH_LONG).show(); 
       } 
      } 
    ); 
} 

public void viewAll() { 
    btnViewAll.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Cursor res = myDb.getAllData(); 
        if(res.getCount() == 0) { 
         // show message 
         showMessage("Error","Nothing found"); 
         return; 
        } 

        StringBuffer buffer = new StringBuffer(); 
        while (res.moveToNext()) { 
         buffer.append("Name :"+ res.getString(0)+"\n"); 
         buffer.append("Teaching Skills :"+ 
res.getString(1)+"\n"); 
         buffer.append("Competency :"+ 
res.getString(2)+"\n"); 
         buffer.append("Approachability :"+ 
res.getString(3)+"\n"); 
         buffer.append("Class Control :"+ 
res.getString(4)+"\n"); 
         buffer.append("Punctuality :"+ 
res.getString(5)+"\n\n"); 
        } 

        // Show all data 
        showMessage("Data",buffer.toString()); 
       } 
      } 
    ); 
} 

public void showMessage(String title,String Message){ 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setCancelable(true); 
    builder.setTitle(title); 
    builder.setMessage(Message); 
    builder.show(); 
} 
} 

DatabaseHelper.java

package com.dot.myapplication; 
import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

public class DatabaseHelper extends SQLiteOpenHelper { 
public static final String DATABASE_NAME = "Student.db"; 
public static final String TABLE_NAME = "student_table"; 
public static final String COL_2 = "NAME"; 
public static final String COL_3 = "F1"; 
public static final String COL_4 = "F2"; 
public static final String COL_5 = "F3"; 
public static final String COL_6 = "F4"; 
public static final String COL_7 = "F5"; 

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

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("create table " + TABLE_NAME +" (NAME TEXT,F1 TEXT,F2 TEXT,F3 
TEXT,F4 TEXT,F5 TEXT)"); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME); 
    onCreate(db); 
} 

public boolean insertData(String name,String F1s,String F2s,String 
F3s,String F4s,String F5s) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(COL_2,name); 
    contentValues.put(COL_3,F1s); 
    contentValues.put(COL_4,F2s); 
    contentValues.put(COL_5,F3s); 
    contentValues.put(COL_6,F4s); 
    contentValues.put(COL_7,F5s); 
    long result = db.insert(TABLE_NAME,null ,contentValues); 
    if(result == -1) 
     return false; 
    else 
     return true; 
} 

public Cursor getAllData() { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor res = db.rawQuery("select * from " + TABLE_NAME, null); 
    return res; 
} 
} 

Chaque fois que le bouton Ajouter des données est cliqué données non grillé inséré s'invoquait. Étant un débutant, je suis incapable de comprendre où sont les choses qui vont mal. Est-ce quelque chose avec la méthode insertData? S'il vous plaît suggérer les changements.

+0

Remplacez 'insert' par' insertOrThrow'. –

Répondre

1

Votre insertion est correcte. Vous devez interroger des données comme celle-ci.

   if(res.moveToFirst()){ 
         do{ 
          buffer.append("Name :"+ res.getString(0)+"\n"); 
          buffer.append("Teaching Skills :"+ res.getString(1)+"\n"); 
          buffer.append("Competency :"+ res.getString(2)+"\n"); 
          buffer.append("Approachability :"+ res.getString(3)+"\n"); 
          buffer.append("Class Control :"+ res.getString(4)+"\n"); 
          buffer.append("Punctuality :"+ res.getString(5)+"\n\n"); 
         }while (res.moveToNext()) 
      } 

Dans votre base de données classe d'aide, vous oubliez de près la base de données après Interrogation il.

Voici un tutoriel parfait pour apprendre l'implémentation de base de données SQLite. http://www.techotopia.com/index.php/An_Android_SQLite_Database_Tutorial

+0

Merci mon pote ... ça a résolu le problème. – Henodi