我试图检查引入的几个值是否在数据库中。我定义了一个SQLHelper类和活动。我尝试从活动中访问SQLHelper类中的那些变量,但我不能,因为存在以下错误:
纵向无法解决
无法解决的变量是:nombre,longitudinal,latitud。
代码:
SQLOpenHelper:
package com.app.mapa;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class Bdoh extends SQLiteOpenHelper
{
SQLiteOpenHelper sbd;
static String T_NOMBRE="lugares"; //para el content provider
private static final String NOMBRE_BD = "Sitios";
private static final int VER_BD = 1;
private static final String bdcons = "CREATE TABLE " + T_NOMBRE +
"(_id INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT, descripcion TEXT, latitud
DOUBLE, " + "longitud DOUBLE, foto TEXT)";
public Bdoh(Context context)
{
super(context, NOMBRE_BD, null, VER_BD);
SQLiteDatabase
db=context.openOrCreateDatabase(NOMBRE_BD,Context.MODE_PRIVATE,null);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(bdcons);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS lugares");
db.execSQL(bdcons);
}
}
活动:
public boolean iguales()
{
boolean ig = false;
Uri urititl = MCProvider.CP_URI;
Cursor c = getContentResolver().query(urititl,null,null,null,null);
c.moveToFirst();
if(c.moveToFirst())
{
if((titlugar.equals(c.getString(c.getColumnIndex(boh.nombre))))
&& (lat.equals(c.getDouble(c.getColumnIndex(boh.latitud)))) &&
(lgt.equals(c.getDouble(bdoh.longitud))))
ig = true;
else ig = false;
}
return ig;
}
我如何访问它们?
感谢。
答案 0 :(得分:1)
假设代码中的'boh'和'bdoh'是Bdoh
类型的对象。
您提到的变量无法解析,因为您的Bdoh
类没有具有该名称的成员变量。所以以下内容不起作用:
if((titlugar.equals(c.getString(c.getColumnIndex(boh.nombre)))) // boh.nombre does not exist
您需要为Bdoh
课程定义这些成员变量,然后才能使用它们。
例如:
public class Bdoh extends SQLiteOpenHelper {
public String nombre;
public String latitud;
// and so on...
}
还请尝试正确格式化您的代码和问题。
另请注意,我认为你在这里“练习”的风格非常糟糕,应该通过getter和setter方法完成,或者通常以完全不同的方式完成。由于我不想要完整的OOP概念,我只能推荐阅读有关面向对象编程的教程。