【发布时间】:2017-04-29 07:42:25
【问题描述】:
所以我正在尝试创建我的第一个 sqLite 数据库。这是非常简单的事情。我所需要的只是让它有一列只包含整数。我要添加的整数来自意图的putExtra。我还希望能够在表中添加和删除整数。我一直在尝试关注 youtube 上的一些视频来完成此操作,但我无法弄清楚。
这是我的 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 中,我正在尝试使用数据库。
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 不能应用于我的 listViewItemPosition 上的 int。
我只是认为我没有正确设置数据库以获取 int 值。
任何帮助将不胜感激!
【问题讨论】:
-
由于 listViewItemPosition 不是 int 的事实,您会遇到错误。因为 CheckedRoutes 构造函数需要一个 int..
-
为什么
listViewItemPosition不是int...调用构造函数有问题..@skyw00lker -
.getIntExtra("listViewItemPosition",0)将只返回一个整数..
标签: android mysql database sqlite