java 操作cursor数据库_java – cursor.getstring()在数据库中获取错误的字段

所以这是我的代码:

public void onItemClick(AdapterView> listView, View view, int position, long id)

{

Cursor cursor = (Cursor) listView.getItemAtPosition(position);

int _id = cursor.getInt(0);

String _recipe = cursor.getString(1);

Intent intent = new Intent(Luzon1Activity.this,RecipeInstruction.class);

intent.putExtra("id", _id);

intent.putExtra("recipe", _recipe);

startActivity(intent);

}

这是我下一个活动的代码:

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.recipeinstruction);

dbHelper = new Dbadapter(this);

dbHelper.open();

bg = (RelativeLayout) findViewById(R.id.relativeLayout1);

Bundle extras = getIntent().getExtras();

if (extras != null) {

id = extras.getInt("id");

recipe = extras.getString("recipe");

}

Toast.makeText(this, id+"\n"+recipe, Toast.LENGTH_SHORT).show();

bg.setBackgroundResource(getImageId(this, recipe));

}

我的问题在于这一部分:String _recipe = cursor.getString(1).

它总是给我错误的数据.我试图更改数字,但它仍然给我错误的数据.

这是我的数据库:

package com.pinoycookbook;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;

public class Dbadapter

{

public static final String ROWID = "_id";

public static final String NAME = "foodname";

public static final String ORIGIN = "origin";

public static final String RECIPE = "recipe";

public static final String CATEGORY = "category";

private static final String TAG = "Dbadapter";

private DatabaseHelper mDbHelper;

private SQLiteDatabase mDb;

private static final String DATABASE_NAME = "PinoyCookbook.sqlite";

public static final String SQLITE_TABLE = "Food";

private static final int DATABASE_VERSION = 1;

private final Context mCtx;

private static final String DATABASE_CREATE =

"CREATE TABLE if not exists " + SQLITE_TABLE + " (" +

ROWID + " integer PRIMARY KEY autoincrement," +

NAME + " TEXT," +

RECIPE + " TEXT," +

ORIGIN + " TEXT," +

CATEGORY+ " TEXT,"+

" UNIQUE (" + ROWID +"));";

private static class DatabaseHelper extends SQLiteOpenHelper

{

DatabaseHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

Log.w(TAG, DATABASE_CREATE);

db.execSQL(DATABASE_CREATE);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

Log.w(TAG, "Upgrading database from version " + oldVersion + " to "

+ newVersion + ", which will destroy all old data");

db.execSQL("DROP TABLE IF EXISTS " + SQLITE_TABLE);

onCreate(db);

}

}

public Dbadapter(Context ctx) {

this.mCtx = ctx;

}

public Dbadapter open() throws SQLException {

mDbHelper = new DatabaseHelper(mCtx);

mDb = mDbHelper.getWritableDatabase();

return this;

}

public void close() {

if (mDbHelper != null) {

mDbHelper.close();

}

}

public long createData(String foodname, String recipe, String origin, int i) {

ContentValues initialValues = new ContentValues();

initialValues.put(NAME, foodname);

initialValues.put(RECIPE, recipe);

initialValues.put(ORIGIN, origin);

initialValues.put(CATEGORY, i);

return mDb.insert(SQLITE_TABLE, null, initialValues);

}

public boolean deleteAllData() {

int doneDelete = 0;

doneDelete = mDb.delete(SQLITE_TABLE, null , null);

Log.w(TAG, Integer.toString(doneDelete));

return doneDelete > 0;

}

public void insertData() {

createData("Adobong Manok","adobongmanok","Manila",1);

createData("Lechon","lechon","Cebu",2);

createData("Crispy Pata","crispypata","Cebu",2);

createData("Bulalo","bulalo","Batangas",1);

createData("Taba ng Talangka Rice","talangkarice","Roxas",2);

createData("Arroz Caldo","arrozcaldo","Roxas",2);

createData("Sinigang","sinigang","Manila",1);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值