Android 第一个sqLite数据库:尝试向数据库添加整数

Android 第一个sqLite数据库:尝试向数据库添加整数,android,mysql,database,sqlite,Android,Mysql,Database,Sqlite,因此,我正在尝试创建我的第一个sqLite数据库。这很简单。我只需要它有一个只包含整数的列。我要添加的整数来自intent的putExtra。我还希望能够从表中添加和删除整数。我一直试图通过YouTube上的一些视频来实现这一点,但我想不出来 这是我的代码 package com.example.zach.listview; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteO

因此,我正在尝试创建我的第一个
sqLite
数据库。这很简单。我只需要它有一个只包含整数的列。我要添加的整数来自intent的
putExtra
。我还希望能够从表中添加和删除整数。我一直试图通过YouTube上的一些视频来实现这一点,但我想不出来

这是我的代码

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 + "\";" );
}
}
这是我的数据库的检查路径

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;
}
}
这里是我的
适配器类
,我试图使用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不能应用于我的listViewItemPosition上的int

我只是觉得我没有正确地设置数据库来接受int值


任何帮助都将不胜感激,谢谢

我在您的代码中发现了两个错误

  • 在处理程序类的
    onCreate
    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.set_checkedRoute(listViewItemPosition);
    
并设置
\u checkedRoute
的值,如下所示

CheckedRoutes checkedRoute = new CheckedRoutes();
checkedRoute.set_checkedRoute(listViewItemPosition);

希望能有所帮助。

您能检查一下这个构造函数是否存在吗?我找不到

  CheckedRoutes checkedRoute = new CheckedRoutes(listViewItemPosition);

由于listViewItemPosition不是int,因此出现错误。因为CheckedRoutes构造函数接受int。为什么
listViewItemPosition
不是int…调用构造函数时出现问题..@skyw00lker
.getIntExtra(“listViewItemPosition”,0)
将只返回一个整数..谢谢,我尝试了上面的代码,但是当我使用.set\u checkedRoute时,我无法解析方法.set\u checkedRoute。编辑:nvm正在工作。非常感谢。