android - 从数据库中获取单个值并转换为字符串

标签 android sqlite

目前我有一个应用程序可以从在线资源获取数据并将这些数据转换为 String

现在我想比较收到的这个 String 数据是否与我数据库中的一行相同。

我不知道怎样做才是可靠的。

(我想测试 String 是否等于 2015-04-28 12:27:28)。

这是数据库中的数据:

id2 LastEdit
1   2015-04-28 12:27:28

我有一个获取方法

public Cursor fetch2() {
        String[] columns = new String[] { DatabaseHelper._ID2, DatabaseHelper.TUT_EDIT };
        Cursor cursor = database.query(DatabaseHelper.TABLE_NAME2, columns, null, null, null, null, null);
        if (cursor != null) {
            cursor.moveToFirst();
        }
        return cursor;
    }

但是当我没有将数据直接转换为 R.id.() 数组时,我不确定如何可靠地获取数据。

编辑:如下所示

final String[] from = new String[] { DatabaseHelper._ID,
            DatabaseHelper.TUT_EDIT};


    final int[] to = new int[] { R.id.pid, R.id.edit };

编辑: 包括数据库管理器

    import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

public class DBManager {
private DatabaseHelper dbHelper;

private Context context;

private SQLiteDatabase database;

public DBManager(Context c) {
    context = c;
}

public DBManager open() throws SQLException {
    dbHelper = new DatabaseHelper(context);
    database = dbHelper.getWritableDatabase();
    return this;

}

public void close() {
    dbHelper.close();
}


public void insert(String id, String cat, String title, String datec, String datem, String name, String image, String video) {
    ContentValues contentValue = new ContentValues();
    contentValue.put(DatabaseHelper.TAG_TUTID, id);
    contentValue.put(DatabaseHelper.TAG_CATID, cat);
    contentValue.put(DatabaseHelper.TAG_TUTTITLE, title);
    contentValue.put(DatabaseHelper.TAG_NAME, name);
    contentValue.put(DatabaseHelper.TAG_DATEC, datec);
    contentValue.put(DatabaseHelper.TAG_DATEM, datem);
    contentValue.put(DatabaseHelper.TAG_IMAGE, image);
    contentValue.put(DatabaseHelper.TAG_VIDEO, video);
    database.insert(DatabaseHelper.TABLE_NAME, null, contentValue);
    Log.d("testing insert: ", cat);
}

public void insert2(String edit) {
    ContentValues contentValue = new ContentValues();
    contentValue.put(DatabaseHelper.TUT_EDIT, edit);
    database.insert(DatabaseHelper.TABLE_NAME2, null, contentValue);
    Log.d("testing insert2: ", edit);
}

public Cursor fetch() {
    String[] columns = new String[] { DatabaseHelper._ID, DatabaseHelper.TAG_TUTID, DatabaseHelper.TAG_CATID, DatabaseHelper.TAG_TUTTITLE, DatabaseHelper.TAG_NAME, DatabaseHelper.TAG_DATEC, DatabaseHelper.TAG_DATEM, DatabaseHelper.TAG_IMAGE, DatabaseHelper.TAG_VIDEO };
    Cursor cursor = database.query(DatabaseHelper.TABLE_NAME, columns, null, null, null, null, null);
    if (cursor != null) {
        cursor.moveToFirst();
    }
    return cursor;
}
public Cursor fetch2() {
    String[] columns = new String[] { DatabaseHelper._ID2, DatabaseHelper.TUT_EDIT };
    Cursor cursor = database.query(DatabaseHelper.TABLE_NAME2, columns, null, null, null, null, null);
    if (cursor != null) {
        cursor.moveToFirst();
    }
    return cursor;
}

public int update(long _id, String id, String cat, String title, String datec, String datem, String name, String image, String video) {
    ContentValues contentValues = new ContentValues();
    contentValues.put(DatabaseHelper.TAG_TUTID, id);
    contentValues.put(DatabaseHelper.TAG_CATID, cat);
    contentValues.put(DatabaseHelper.TAG_TUTTITLE, title);
    contentValues.put(DatabaseHelper.TAG_NAME, name);
    contentValues.put(DatabaseHelper.TAG_DATEC, datec);
    contentValues.put(DatabaseHelper.TAG_DATEM, datem);
    contentValues.put(DatabaseHelper.TAG_IMAGE, image);
    contentValues.put(DatabaseHelper.TAG_VIDEO, video);
    Log.d("testing update: ", image);

    int i = database.update(DatabaseHelper.TABLE_NAME, contentValues, DatabaseHelper._ID + " = " + _id, null);
    return i;
}
public int update2(long _id, String edit) {
    ContentValues contentValues = new ContentValues();
    contentValues.put(DatabaseHelper.TUT_EDIT, edit);
    Log.d("testing update2: ", edit);

    int i = database.update(DatabaseHelper.TABLE_NAME2, contentValues, DatabaseHelper._ID2 + " = " + _id, null);
    return i;
}
public void delete(long _id) {
    database.delete(DatabaseHelper.TABLE_NAME, DatabaseHelper._ID + "=" + _id, null);
}
}

和数据库助手

 import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper {
// Table Name
public static final String TABLE_NAME = "TODOS";

// Table columns
public static final String _ID = "_id";
public static final String TAG_TUTID = "tutID";
public static final String TAG_CATID = "catID";
public static final String TAG_TUTTITLE = "tutTitle";
public static final String TAG_NAME = "tutText";
public static final String TAG_DATEC = "tutDateCreated";
public static final String TAG_DATEM = "tutDateModified";
public static final String TAG_IMAGE = "imageID";
public static final String TAG_VIDEO = "videoID";


public static final String TABLE_NAME2 = "TOEDIT";
public static final String _ID2 = "_id2";
public static final String TUT_EDIT = "lastEdit";



// Database Information
static final String DB_NAME = "tuts.DB";

// database version
static final int DB_VERSION = 1;

// Creating table query
private static final String CREATE_TABLE = "create table " + TABLE_NAME + "(" + _ID
        + " INTEGER PRIMARY KEY AUTOINCREMENT, " + TAG_TUTID + " TEXT NOT NULL, " + TAG_CATID + " TEXT, " + TAG_TUTTITLE+ " TEXT, " + TAG_NAME+ " TEXT,  " + TAG_DATEC+ " TEXT, " + TAG_DATEM+ " TEXT,  " + TAG_IMAGE+ " TEXT, " + TAG_VIDEO+ " TEXT);";

private static final String CREATE_TABLE2 = "create table " + TABLE_NAME2 + "(" + _ID2
        + " INTEGER PRIMARY KEY AUTOINCREMENT, " + TUT_EDIT + " TEXT NOT NULL);";

public DatabaseHelper(Context context) {
    super(context, DB_NAME, null, DB_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {db.execSQL(CREATE_TABLE);{db.execSQL(CREATE_TABLE2);
    Log.d("testing create: ", DB_NAME);}}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME2);
    onCreate(db);
    Log.d("testing delete: ", DB_NAME);
}
}

感谢您的宝贵时间。

最佳答案

你可以这样做:

Cursor cursor = getDb().query("TABLE_NAME", columns, "field_where = ? AND field_where_2 = ?", new String[]{""+field_1,""+field_2}, null, null, "field_order_by ASC");

        if (cursor.getCount()>0){
            cursor.moveToFirst();
            do{
                YourClass d = new YourClass();
                d.set_field_1(cursor.getLong(0));
                d.set_field_2(cursor.getString(1));
                d.set_field_3(cursor.getInt(2));
            }while(cursor.moveToNext());
        }

这种方式很靠谱。

希望对你有帮助。

关于android - 从数据库中获取单个值并转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30039665/

相关文章:

java - 从自定义适配器类刷新 ListView - Android

SQLite 问题选择两列作为一个

c# - SQLite 查询中的 "Apply joins is not supported"

android - 类型不匹配 : inferred type is HomeViewModel! 但 ViewModel!预计

android - 使用 Google Places API 在 Google map 中查找附近的地点

java - "Activity has leaked window... that was originally added."视频加载失败导致

java - 如何检查邮箱验证?错误是什么?

java - SQLite 异常 : no such table when trying to add an Object to a table

android - SharedPreferences 在清除数据后仍然存在

java - 如何获取sqlite中受影响的行数