0

i am making a contact save app Backend so help

i do not know about this error, and i don not know how to solve this erorr. com.andro.background.cruddb E/SQLiteLog: (1) table contacts_table has no column named phone_number

error code:

2020-02-02 02:14:10.614 19583-19583/com.andro.background.cruddb E/SQLiteLog: (1) table contacts_table has no column named phone_number
2020-02-02 02:14:10.621 19583-19583/com.andro.background.cruddb E/SQLiteDatabase: Error inserting name=meraNumber phone_number=9383989389
    android.database.sqlite.SQLiteException: table contacts_table has no column named phone_number (code 1): , while compiling: INSERT INTO contacts_table(name,phone_number) VALUES (?,?)
        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:890)
        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:501)
        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
        at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
        at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1546)
        at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1417)
        at com.andro.background.cruddb.data.MyDbHandler.addContact(MyDbHandler.java:60)
        at com.andro.background.cruddb.MainActivity.onCreate(MainActivity.java:36)
        at android.app.Activity.performCreate(Activity.java:7009)
        at android.app.Activity.performCreate(Activity.java:7000)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

MainActivity.java Code

package com.andro.background.cruddb;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

import com.andro.background.cruddb.data.MyDbHandler;
import com.andro.background.cruddb.model.Contact;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyDbHandler db=new MyDbHandler(MainActivity.this);

        // creating contact obj for db
        Contact harry= new Contact();
        harry.setPhoneNumber("9090909090");
        harry.setName("sunnykanumber");
        // adding contact to the db
        db.addContact(harry);

        Contact tehri=new Contact();
        tehri.setName("meraNumber");
        tehri.setPhoneNumber("9383989389");
        db.addContact(tehri);

        List<Contact> allContacts=db.getAllContacts();
        for(Contact contact: allContacts){


                    //We can loop this way as well, all the elements of allContacts will be iterated one by one.
            Log.d("pkmb","/n"
                                +"id :"+contact.getId()+"/n"
                                +"Name:"+contact.getName()+"/n"
                                +"Number:"+contact.getPhoneNumber());
        }

    }
}

MyDbHandler.java // db code

package com.andro.background.cruddb.data;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import com.andro.background.cruddb.model.Contact;
import com.andro.background.cruddb.params.Params;

import java.util.ArrayList;
import java.util.List;

public class MyDbHandler extends SQLiteOpenHelper {

    public  MyDbHandler(Context context){ //yh constructer banane k liye( alt+insert)
        // isme super class invoke krenge   //null, uska default behaviour lene k liye
        super(context, Params.DB_NAME, null, Params.DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) { // here we need to write sql code, capital letters are supposed to be good practice.
        String create="CREATE TABLE "+ Params.TABLE_NAME + "("
                +Params.KEY_ID + " INTEGER PRIMARY KEY,"+ Params.KEY_NAME
                + " TEXT," + Params.KEY_PHONE + "TEXT"+")";
        Log.d("pkmb", "onCreate: is working"+ create);

        db.execSQL(create);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    public void addContact(Contact contact){
        SQLiteDatabase db=this.getWritableDatabase();

        ContentValues values=new ContentValues();
        values.put(Params.KEY_NAME,contact.getName());
        values.put(Params.KEY_PHONE,contact.getPhoneNumber());

        db.insert(Params.TABLE_NAME,null,values); 
        Log.d("pkmb","succec fully inserted");
        db.close();
    }

    public List<Contact> getAllContacts(){  // kyonki hume List return krwani h
        List<Contact> contactList=new ArrayList<>();
        SQLiteDatabase db=this.getReadableDatabase();

        // Generate the query to read form the database
        String select= "SELECT * FROM "+ Params.TABLE_NAME;
        Cursor cursor=db.rawQuery(select,null);

        //Loop through now
        if(cursor.moveToFirst()){
                Contact contact=new Contact();
                contact.setId(Integer.parseInt(cursor.getString(1)));//int value k liye
                contact.setName(cursor.getString(2));
                contact.setPhoneNumber(cursor.getString(3));
                // contact collect kiye aur list me daal diya
                contactList.add(contact);
            } while (cursor.moveToNext()); 
        }
        return contactList;
    }

java>com...> Model>Contacts.java

package com.andro.background.cruddb.model;

public class Contact { 

    private int id;
    private String name;
    private  String phoneNumber;

    public Contact( String name, String phoneNumber) {
        this.name = name;
        this.phoneNumber = phoneNumber;
    }
    public Contact(int id, String name, String phoneNumber) {
        this.id = id;
        this.name = name;
        this.phoneNumber = phoneNumber;
    }

    public Contact() {

    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
}

Params.java // parameters



package com.andro.background.cruddb.params;

public class Params {
    public static final int DB_VERSION=1;  // yh capitals
    public static final String DB_NAME="contacts_db";
    public static final String TABLE_NAME="contacts_table";

    /// keys of your db
    public static final String KEY_ID="id";
    public static final String KEY_NAME="name";
    public static final String KEY_PHONE="phone_number";
}
Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
AG-Developer
  • 361
  • 2
  • 10
  • Try putting `SQLiteDatabase db = this.getWritableDatabase();` in the constructor of your DB Handler – Nero Feb 01 '20 at 22:07
  • @Nero this is already submitted in this. now finally i found error. error was in `Params.java` there "contacts_db" , i will change it with right references "contact_db" then it will be fix – AG-Developer Feb 02 '20 at 22:08

0 Answers0