插入SQLiteDatabase时出错

时间:2018-06-17 18:05:13

标签: android database sqlite android-studio android-sqlite

我试图开展活动"管理1"在数据库中插入信息的功能。我用作例子(cin = admin; motdepasse = admin; nometprenom = admin)。但我不知道为什么它会给我这个错误:

06-17 17:45:03.384 3207-3207/com.example.pc.myapplication E/SQLiteDatabase: Error inserting cin=admin motdepasse=admin nometprenom=admin
android.database.sqlite.SQLiteConstraintException: NOT NULL constraint failed: contacts.name (code 1299)
    at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
    at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782)
    at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
    at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
    at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1474)
    at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1343)
    at com.example.pc.myapplication.DatabaseHelper.insertContact(DatabaseHelper.java:52)
    at com.example.pc.myapplication.Administration1.onOKClick(Administration1.java:64)
    at java.lang.reflect.Method.invoke(Native Method)

有我的Databasehelper:

package com.example.pc.myapplication;

     import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
     import android.database.DatabaseErrorHandler;
     import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
     import android.provider.ContactsContract;

      public class DatabaseHelper extends SQLiteOpenHelper {

private static final int DATABASE_VERSION =1 ;
private static final String DATABASE_NAME = "contacts.db" ;
private static final String TABlE_NAME = "contacts" ;
private static final String TABlE_NAME1 = "Argent" ;
private static final String COLUMN_ID = "id" ;
private static final String COLUMN_NOMETPRENOM = "nometprenom" ;
private static final String COLUMN_CIN = "cin" ;
private static final String COLUMN_MOTDEPASSE = "motdepasse" ;
SQLiteDatabase db;


private static final String TABlE_CREATE = "create table contacts ( id integer primary key not null , nometprenom Text not null , cin Text not null , motdepasse Text not null);" ;

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

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(TABlE_CREATE);
     this.db=db;
}

public void insertContact(Contact c)
{
    db = this.getWritableDatabase();
    ContentValues values = new ContentValues();

    String query = "select * from contacts" ;
    Cursor cursor = db.rawQuery(query , null) ;
    int count = cursor.getCount();

    values.put(COLUMN_NOMETPRENOM, c.getnometprenom());
    values.put(COLUMN_MOTDEPASSE , c.getmotdepasse());
    values.put(COLUMN_CIN , c.getcin());

    db.insert(TABlE_NAME,null, values);
}



public String searchPass (String nometprenom) {
    db = this.getReadableDatabase();
    String query = "select nometprenom , motdepasse from " +TABlE_NAME;
    Cursor cursor = db.rawQuery(query,null);
    String a,b;
    b= "not found";
    if (cursor.moveToFirst())
    {
        do {
            a = cursor.getString(0);

            if (a.equals(nometprenom)) {
                b = cursor.getString(1);
                break;
            }
        }
        while (cursor.moveToNext());
            }
            return b;
        }


            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int 
         newVersion) {
            String query = "DROP TABLE IF EXISTS "+TABlE_NAME ;
            db.execSQL(query);
            this.onCreate(db);

        }


        }

有我的班级Administration1.java:

package com.example.pc.myapplication;

 import android.app.Activity;
  import android.content.Intent;
 import android.os.Bundle;
  import android.widget.EditText;
   import android.widget.Toast;
  import android.view.View;

 public class Administration1 extends Activity {

DatabaseHelper helper = new DatabaseHelper (this);

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.administration1);
   }

     public void onOKClick ( View v )
     {

   if (v.getId() == R.id.buttonokadmin) {

    EditText nometprenom = (EditText)findViewById(R.id.TFnometprenom);
EditText cin = (EditText)findViewById(R.id.TFcin);
EditText pass1 = (EditText)findViewById(R.id.TFpass1);
EditText pass2 = (EditText)findViewById(R.id.TFpass2);

String strnometprenom = nometprenom.getText().toString();
String strcin = cin.getText().toString();
String strpass1 = pass1.getText().toString();
String strpass2 = pass2.getText().toString();

if (strnometprenom.equals(""))
{
    Toast.makeText(this,"tapez nom et prenom ",Toast.LENGTH_SHORT).show();
}
if (strcin.equals(""))
{
    Toast.makeText(this,"tapez CIN ",Toast.LENGTH_SHORT).show();
}
if (strpass1.equals(""))
{
    Toast.makeText(this,"tapez mot de passe ",Toast.LENGTH_SHORT).show();
}
if (strpass2.equals(""))
{
    Toast.makeText(this,"tapez confirmer mot de passe ",Toast.LENGTH_SHORT).show();
}

 if (!strpass1.equals(strpass2)){
    //popup msg
    Toast pass = Toast.makeText(Administration1.this , "Mots de passe fausses!" , Toast.LENGTH_SHORT);
            pass.show();
       }
       else {

    // insert the details in database
    Contact c = new Contact();
    c.setnometprenom(strnometprenom);
    c.setcin(strcin);
    c.setmotdepasse(strpass1);

    helper.insertContact(c);
    Toast pass = Toast.makeText(Administration1.this , "OK" , 
     Toast.LENGTH_SHORT);
    pass.show();
    {
        Intent i;

        i = new Intent(Administration1.this, MainActivity.class);
        startActivity(i);
    }

   }
    }
   }
    }

提前感谢您的帮助。

0 个答案:

没有答案