Android SQLite select语句不工作
我已经写了一个是否保存数据的方法。方法必须返回false,但它返回true。我的密码在这里Android SQLite select语句不工作,android,select,android-sqlite,Android,Select,Android Sqlite,我已经写了一个是否保存数据的方法。方法必须返回false,但它返回true。我的密码在这里 private boolean baskaVarMi(String gelenTarih) { boolean sonuc = false; int k = 0; SQLiteDatabase db = dbo.getReadableDatabase(); String sql = "select * from gunlukler where tarih='" + gel
private boolean baskaVarMi(String gelenTarih) {
boolean sonuc = false;
int k = 0;
SQLiteDatabase db = dbo.getReadableDatabase();
String sql = "select * from gunlukler where tarih='" + gelenTarih + "'";
Cursor c = db.rawQuery(sql, null);
if (c.moveToFirst()) {
do {
if (c.getString(c.getColumnIndex("tarih")) == gelenTarih) {
k++;
}
} while (c.moveToNext());
}
if (k > 0) {
sonuc = true;
}else if(k == 0){
sonuc = false;
}
return sonuc;
}
这种方法有什么问题
c.getString(c.getColumnIndex("tarih")) == gelenTarih
这是不对的。配合
c.getString(c.getColumnIndex("tarih")).equals( gelenTarih)
这是不对的。配合
c.getString(c.getColumnIndex("tarih")).equals( gelenTarih)
这样试试
Cursor cur = db.query(SQL_TABLE, new String[] { URLNAME,ID,URLVALUE }, null, null,
null, null, null); // query..
这样试试
Cursor cur = db.query(SQL_TABLE, new String[] { URLNAME,ID,URLVALUE }, null, null,
null, null, null); // query..
随它改变:
Cursor c = db.rawQuery(sql, null);
if (c.getCount()>0) {
c.moveToFirst()
do {
if (c.getString(c.getColumnIndex("tarih")).equals(gelenTarih)) {
k++;
}
} while (c.moveToNext());
}
随它改变:
Cursor c = db.rawQuery(sql, null);
if (c.getCount()>0) {
c.moveToFirst()
do {
if (c.getString(c.getColumnIndex("tarih")).equals(gelenTarih)) {
k++;
}
} while (c.moveToNext());
}
只使用这个
private boolean baskaVarMi(String gelenTarih) {
SQLiteDatabase db = dbo.getReadableDatabase();
String sql = "select * from gunlukler where tarih='" + gelenTarih + "'";
Cursor c = db.rawQuery(sql, null);
if (c.moveToFirst())
{
return true;
}
else
{
return false;
}
}
只使用这个
private boolean baskaVarMi(String gelenTarih) {
SQLiteDatabase db = dbo.getReadableDatabase();
String sql = "select * from gunlukler where tarih='" + gelenTarih + "'";
Cursor c = db.rawQuery(sql, null);
if (c.moveToFirst())
{
return true;
}
else
{
return false;
}
}
要比较字符串,必须使用
equals()
方法。但是在您的场景中,没有理由使用第二个条件e.q.if(c.getString(c.getColumnIndex(“tarih”)==gelenTarih)
您不需要它,但是如果您仍然想使用它,那么就使用equals()
另外,我建议使用参数化语句,而不是硬编码。我同意Sajmon的观点,SQLite是如此的匆忙,使用参数化语句,当您想要比较字符串时,必须使用equals()
方法。但是在您的场景中,没有理由使用第二个条件e.q.if(c.getString(c.getColumnIndex(“tarih”)==gelenTarih)
您不需要它,但是如果您仍然想使用它,那么就使用equals()
另外,我建议使用参数化语句,而不是硬编码。我同意Sajmon的观点,SQLite是如此的匆忙,使用参数化语句,