首先sqLite数据库:试图将整数添加到数据库
所以我试图创建我的第一个sqLite
数据库。这非常简单。我需要的只是它有一列只包含整数。我想添加的整数是从意图中的putExtra
。我也希望能够添加和删除表中的整数。我一直在试着按照你的一些视频来做到这一点,但我无法弄清楚。首先sqLite数据库:试图将整数添加到数据库
我的继承人MbDbHandler代码
package com.example.zach.listview;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.Context;
import android.content.ContentValues;
public class MyDBHandler extends SQLiteOpenHelper{
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "checked_routes.db";
public static final String TABLE_CHECKED_ROUTES = "checked_routes";
public static final String COLUMN_ID = "_checkedRoutes";
public MyDBHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE_TABLE " + TABLE_CHECKED_ROUTES + "(" +
COLUMN_ID + " INTEGER PRIMARY KEY " + ");";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP_TABLE_IF_EXISTS " + TABLE_CHECKED_ROUTES);
onCreate(db);
}
/////Add row to table
public void addCheckedRoute(CheckedRoutes checkedRoute){
ContentValues values = new ContentValues();
values.put(COLUMN_ID, checkedRoute.get_checkedRoute());
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_CHECKED_ROUTES, null, values);
db.close();
}
////Delete row from table
public void deleteCheckedRow(int checkedRoute){
SQLiteDatabase db = getWritableDatabase();
db.execSQL("DELETE FROM " + TABLE_CHECKED_ROUTES + "WHERE " + COLUMN_ID + "=\"" + checkedRoute + "\";");
}
}
我的继承人CheckedRoutes类为DB
package com.example.zach.listview;
public class CheckedRoutes {
int _checkedRoute;
public void set_checkedRoute(int _checkedRoute){
this._checkedRoute = _checkedRoute;
}
public int get_checkedRoute(){
return _checkedRoute;
}
}
我
adapter class
这里哪里我试图使用DB。
MyDBHandler dbHandler;
dbHandler = new MyDBHandler(this, null, null, 1);
int listViewItemPosition = ((Activity) getContext()).getIntent().getIntExtra("listViewItemPosition",0);
CheckedRoutes checkedRoute = new CheckedRoutes(listViewItemPosition);
dbHandler.addCheckedRoute(checkedRoute);
,但我得到一个错误说
CheckedRoutes()CheckedRoutes不能应用到INT在我listViewItemPosition。
我只是不认为我已经正确设置了数据库以取得int值。
任何帮助将不胜感激谢谢!
有两个错误,我在你的代码
-
发现在
onCreate
和Handler类的onUpgrade
方法。 您正在执行错误的SQL查询。@Override public void onCreate(SQLiteDatabase db) { String query = "CREATE TABLE " + TABLE_CHECKED_ROUTES + "(" + COLUMN_ID + " INTEGER PRIMARY KEY " + ");"; db.execSQL(query); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_CHECKED_ROUTES); onCreate(db); }
不要使用两者之间下划线。
-
还要检查
CheckedRoutes
不具有参数化构造,所以改变CheckedRoutes
声明如下CheckedRoutes checkedRoute = new CheckedRoutes();
和_checkedRoute
设定值如下
checkedRoute.set_checkedRoute(listViewItemPosition);
希望它会帮你页。
谢谢我试过上面的代码,但是当我使用.set_checkedRoute时我无法解析方法.set_checkedRoute。编辑:nvm现在工作。谢谢! – zsh5032
你可以检查一下这个构造函数是否存在吗?我找不到任何
CheckedRoutes checkedRoute = new CheckedRoutes(listViewItemPosition);
你得到的事实,listViewItemPosition不是一个int的错误二重奏。 as CheckedRoutes constructor take int .. – skyw00lker
为什么'listViewItemPosition'不是int ...调用构造函数时出现问题.. @ skyw00lker – ELITE
'.getIntExtra(“listViewItemPosition”,0)'只会返回一个整数。 。 – ELITE