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";
}