У меня есть база данных SQL следующим образом:
import java.text.SimpleDateFormat;
import java.util.Date;
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.text.format.DateFormat;
public class sqlDatabase {
public static final String KEY_ROWID = "_id";
public static final String KEY_PURCHASEREFUND = "_purchaserefund";
public static final String KEY_LOCATION = "_location";
public static final String KEY_SHOPTYPE = "_shoptype";
public static final String KEY_PRICE = "_price";
public static final String KEY_DATE = "_datevalue";
public static final String KEY_CARDUSED = "_cardused";
public static final String KEY_DATEVALUE = "_carddate";
private static final String DATABASE_NAME = "receiptdb";
private static final String DATABASE_TABLE = "receipttable";
private static final int DATABASE_VERSION = 1;
private receiptDBhelper receiptHelper;
private final Context receiptContext;
private SQLiteDatabase receiptDatabase;
private static class receiptDBhelper extends SQLiteOpenHelper{
public receiptDBhelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase rdb) {
// TODO Auto-generated method stub
rdb.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_PURCHASEREFUND + " TEXT NOT NULL, " +
KEY_DATEVALUE + " TEXT NOT NULL, " +
KEY_DATE + " TEXT NOT NULL, " +
KEY_CARDUSED + " TEXT NOT NULL, " +
KEY_LOCATION + " TEXT NOT NULL, " +
KEY_SHOPTYPE + " TEXT NOT NULL, " +
KEY_PRICE + " TEXT NOT NULL);"
);
}
@Override
public void onUpgrade(SQLiteDatabase rdb, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
rdb.execSQL("DROP_TABLE_IF_EXISTS " + DATABASE_TABLE);
onCreate(rdb);
}
}
public sqlDatabase(Context c){
receiptContext = c;
}
public sqlDatabase open() throws SQLException {
receiptHelper = new receiptDBhelper(receiptContext);
receiptDatabase = receiptHelper.getWritableDatabase();
return this;
}
public void close(){
receiptHelper.close();
}
public long createEntry(String purchaserefund, String shoptype,
String location, String price, String cardused) {
// TODO Auto-generated method stub
ContentValues dbcv = new ContentValues();
long saveddatevalue = new Date().getTime();
SimpleDateFormat dateformat = new SimpleDateFormat("dd-MM-yyyy");
Date date = new Date();
dbcv.put(KEY_PURCHASEREFUND, purchaserefund);
dbcv.put(KEY_SHOPTYPE, shoptype);
dbcv.put(KEY_LOCATION, location);
dbcv.put(KEY_PRICE, price);
dbcv.put(KEY_CARDUSED, cardused);
dbcv.put(KEY_DATE, dateformat.format(date));
dbcv.put(KEY_DATEVALUE, saveddatevalue);
return receiptDatabase.insert(DATABASE_TABLE, null, dbcv);
}
public String getDate(String cardused) {
// TODO Auto-generated method stub
String[] receiptDBcolumns = { KEY_DATE, KEY_LOCATION, KEY_SHOPTYPE, KEY_PRICE, KEY_DATEVALUE, KEY_CARDUSED };
Cursor receiptcursor = receiptDatabase.query(DATABASE_TABLE, receiptDBcolumns, null, null, null, null, null);
String receiptdate = "";
String outputcardcheck = cardused;
long datevalue = new Date().getTime();
long millisIn32Days = 32 * 24 * 60 * 60 * 1000;
long daysBeforeLong = (datevalue - millisIn32Days);
int iDate = receiptcursor.getColumnIndex(KEY_DATE);
int iDateValue = receiptcursor.getColumnIndex(KEY_DATEVALUE);
int iCardUsed = receiptcursor.getColumnIndex(KEY_CARDUSED);
for (receiptcursor.moveToFirst(); !receiptcursor.isAfterLast(); receiptcursor.moveToNext()) {
long inputDateValue = receiptcursor.getLong(iDateValue);
String outputCardUsed = receiptcursor.getString(iCardUsed);
if (outputCardUsed == outputcardcheck) {
if (inputDateValue < daysBeforeLong) {
receiptdate = receiptdate + receiptcursor.getString(iDate) + "\n";
}
}
}
return receiptdate;
}
public String getLocation(String cardused) {
// TODO Auto-generated method stub
String[] receiptDBcolumns = { KEY_DATE, KEY_LOCATION, KEY_SHOPTYPE, KEY_PRICE, KEY_DATEVALUE };
Cursor receiptcursor = receiptDatabase.query(DATABASE_TABLE, receiptDBcolumns, null, null, null, null, null);
String receiptlocation = "";
String outputcardcheck = cardused;
long datevalue = new Date().getTime();
long millisIn32Days = 32 * 24 * 60 * 60 * 1000;
long daysBeforeLong = (datevalue - millisIn32Days);
int iLocation = receiptcursor.getColumnIndex(KEY_LOCATION);
int iDateValue = receiptcursor.getColumnIndex(KEY_DATEVALUE);
int iCardUsed = receiptcursor.getColumnIndex(KEY_CARDUSED);
for (receiptcursor.moveToFirst(); !receiptcursor.isAfterLast(); receiptcursor.moveToNext()) {
long inputDateValue = receiptcursor.getLong(iDateValue);
String outputCardUsed = receiptcursor.getString(iCardUsed);
if (outputCardUsed == outputcardcheck) {
if (inputDateValue < daysBeforeLong) {
receiptlocation = receiptlocation + receiptcursor.getString(iLocation) + "\n";
}
}
}
return receiptlocation;
}
public String getShopType(String cardused) {
// TODO Auto-generated method stub
String[] receiptDBcolumns = { KEY_DATE, KEY_LOCATION, KEY_SHOPTYPE, KEY_PRICE, KEY_DATEVALUE };
Cursor receiptcursor = receiptDatabase.query(DATABASE_TABLE, receiptDBcolumns, null, null, null, null, null);
String receiptshoptype = "";
String outputcardcheck = cardused;
long datevalue = new Date().getTime();
long millisIn32Days = 32 * 24 * 60 * 60 * 1000;
long daysBeforeLong = (datevalue - millisIn32Days);
int iShopType = receiptcursor.getColumnIndex(KEY_SHOPTYPE);
int iDateValue = receiptcursor.getColumnIndex(KEY_DATEVALUE);
int iCardUsed = receiptcursor.getColumnIndex(KEY_CARDUSED);
for (receiptcursor.moveToFirst(); !receiptcursor.isAfterLast(); receiptcursor.moveToNext()) {
long inputDateValue = receiptcursor.getLong(iDateValue);
String outputCardUsed = receiptcursor.getString(iCardUsed);
if (outputCardUsed == outputcardcheck) {
if (inputDateValue < daysBeforeLong) {
receiptshoptype = receiptshoptype + receiptcursor.getString(iShopType) + "\n";
}
}
}
return receiptshoptype;
}
public String getPrice(String cardused) {
// TODO Auto-generated method stub
String[] receiptDBcolumns = { KEY_DATE, KEY_LOCATION, KEY_SHOPTYPE, KEY_PRICE, KEY_DATEVALUE };
Cursor receiptcursor = receiptDatabase.query(DATABASE_TABLE, receiptDBcolumns, null, null, null, null, null);
String receiptprice = "";
String outputcardcheck = cardused;
long datevalue = new Date().getTime();
long millisIn32Days = 32 * 24 * 60 * 60 * 1000;
long daysBeforeLong = (datevalue - millisIn32Days);
int iPrice = receiptcursor.getColumnIndex(KEY_PRICE);
int iDateValue = receiptcursor.getColumnIndex(KEY_DATEVALUE);
int iCardUsed = receiptcursor.getColumnIndex(KEY_CARDUSED);
for (receiptcursor.moveToFirst(); !receiptcursor.isAfterLast(); receiptcursor.moveToNext()) {
long inputDateValue = receiptcursor.getLong(iDateValue);
String outputCardUsed = receiptcursor.getString(iCardUsed);
if (outputCardUsed == outputcardcheck) {
if (inputDateValue < daysBeforeLong) {
receiptprice = receiptprice + receiptcursor.getString(iPrice) + "\n";
}
}
}
return receiptprice;
}
}
Где оператор (String cardused) является строкой, вызываемой из класса, в который я хочу вызвать значения базы данных для(соответствующий код приведен ниже): sqlDatabase recetdb = new sqlDatabase (Statement.this);
receiptdb.open();
String receiptdate = receiptdb.getDate(cardused);
String receiptlocation = receiptdb.getLocation(cardused);
String receiptshoptype = receiptdb.getShopType(cardused);
String receiptprice = receiptdb.getPrice(cardused);
receiptdb.close();
Я только что добавил в (String cardused) параметры для методов "get", вся база данных былаРаньше работал идеально, но теперь возникает эта ошибка!
Есть ли другой способ передать значение строки в базу данных SQL для сравнения при выводе результатов, или здесь что-то не так в моем коде?
Спасибо!