Java 在Android中如何在SQLite数据库中插入数据?

Java 在Android中如何在SQLite数据库中插入数据?,java,android,Java,Android,我正在android应用程序中实现SQLite db,我希望从JSON检索数据并存储到SQLite db中。我看到了使用SQLite的一个示例,但我使用了不同的列名wchi is store in SQLite db 但是当我运行这个应用程序时,我得到了如下错误= ((1)表联系人没有名为cost的列 插入电话号码=9533333333成本=46456姓名=Karthik时出错 android.database.sqlite.SQLiteException:表联系人没有名为cost(代码1)的列

我正在android应用程序中实现SQLite db,我希望从JSON检索数据并存储到SQLite db中。我看到了使用SQLite的一个示例,但我使用了不同的列名wchi is store in SQLite db

但是当我运行这个应用程序时,我得到了如下错误=

((1)表联系人没有名为cost的列

插入电话号码=9533333333成本=46456姓名=Karthik时出错

android.database.sqlite.SQLiteException:表联系人没有名为cost(代码1)的列,编译时:插入联系人(电话号码、成本、名称)值(?,,?)

公共类DatabaseHandler扩展了SQLiteOpenHelper{
//所有静态变量
//数据库版本
私有静态最终int数据库_VERSION=1;
//数据库名称
私有静态最终字符串数据库\u NAME=“contactsManager”;
//联系人表名称
专用静态最终字符串表\u CONTACTS=“CONTACTS”;
//联系人表列名称
私有静态最终字符串密钥\u ID=“ID”;
私有静态最终字符串键\u NAME=“NAME”;
私有静态最终字符串密钥\u COST=“COST”;
专用静态最终字符串密钥\u PH\u NO=“电话号码”;
公共数据库处理程序(上下文){
super(上下文、数据库名称、null、数据库版本);
}
//创建表
@凌驾
public void onCreate(SQLiteDatabase db){
字符串CREATE_CONTACTS_TABLE=“CREATE TABLE”+TABLE_CONTACTS+”(“
+键ID+“整数主键”+“键名称+”文本
+关键字成本+文本
+键号+“文本”+”;
execSQL(创建联系人表);
}
//升级数据库
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
//删除旧表(如果存在)
db.execSQL(“如果存在删除表”+表_联系人);
//再次创建表
onCreate(db);
}
/**
*所有CRUD(创建、读取、更新、删除)操作
*/
//添加新联系人
无效添加联系人(联系人联系人){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues=新的ContentValues();
value.put(KEY_NAME,contact._NAME);//contact NAME
value.put(KEY_COST,contact._COST);//联系电话
value.put(KEY_PH_NO,contact.\u mobile);//联系人电话号码
//插入行
db.插入(表_触点,空,值);
db.close();//关闭数据库连接
}
//获得单一联系
联系人getContact(int-id){
SQLiteDatabase db=this.getReadableDatabase();
Cursor Cursor=db.query(TABLE_CONTACTS,新字符串[]{KEY_ID,
密钥名称、密钥成本、密钥编号、密钥ID+“=?”,
新字符串[]{String.valueOf(id)},null,null,null,null);
如果(光标!=null)
cursor.moveToFirst();
Contact Contact=新联系人(Integer.parseInt(cursor.getString(0)),
cursor.getString(1)、cursor.getString(2)、cursor.getString(3));
//回接
回接;
}
//获取所有联系人
公共列表getAllContacts(){
List contactList=new ArrayList();
//选择所有查询
String selectQuery=“SELECT*FROM”+表格\联系人;
SQLiteDatabase db=this.getWritableDatabase();
Cursor Cursor=db.rawQuery(selectQuery,null);
//循环遍历所有行并添加到列表
if(cursor.moveToFirst()){
做{
触点=新触点();
set_id(Integer.parseInt(cursor.getString(0));
set_name(cursor.getString(1));
set_cost(cursor.getString(2));
set_mobile(cursor.getString(3));
联系人列表。添加(联系人);
}while(cursor.moveToNext());
}
//返回联系人列表
返回联系人列表;
}
//更新单个联系人
public int updateContact(联系人){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues=新的ContentValues();
value.put(KEY_NAME,contact.get_NAME());
value.put(KEY_COST,contact.get_COST());
value.put(KEY_PH_NO,contact.get_mobile());
//更新行
返回db.update(表联系人、值、键ID+“=?”,
新字符串[]{String.valueOf(contact.get_id())});
}
//删除单个联系人
公共联系人(联系人){
SQLiteDatabase db=this.getWritableDatabase();
db.delete(表触点,键ID+“=?”,
新字符串[]{String.valueOf(contact.get_id())});
db.close();
}
//获取联系人计数
public int getcontactscont(){
String countQuery=“SELECT*FROM”+表\u联系人;
SQLiteDatabase db=this.getReadableDatabase();
Cursor Cursor=db.rawQuery(countQuery,null);
cursor.close();
//返回计数
返回cursor.getCount();
}
}

尝试清除应用程序数据,然后重新运行应用程序,您之前可能有不同的列,并运行了一次应用程序(这意味着不会再次调用创建表)。

更改此行

private static final int DATABASE_VERSION = 1;
对此

private static final int DATABASE_VERSION = 2;

并再次检查您的工作。

此操作是否已成功运行过一次?
private static final int DATABASE_VERSION = 2;