从sqlite表中获取一行
我试图获取所有具有特定日期的行,但它不打印任何内容。得到所有的工作,但具体的设计没有。问题似乎在这方面: String selectQuery=“SELECT*FROM”+表\联系人+”其中“+键\日期+”=“+日期 我真的很感激你的帮助从sqlite表中获取一行,sqlite,row,Sqlite,Row,我试图获取所有具有特定日期的行,但它不打印任何内容。得到所有的工作,但具体的设计没有。问题似乎在这方面: String selectQuery=“SELECT*FROM”+表\联系人+”其中“+键\日期+”=“+日期 我真的很感激你的帮助 private static final String KEY_ID = "id"; private static final String KEY_PNAME = "pName"; private static final String KE
private static final String KEY_ID = "id";
private static final String KEY_PNAME = "pName";
private static final String KEY_QUANTITY = "quantity";
private static final String KEY_DATE = "date";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_PNAME + " TEXT,"
+ KEY_QUANTITY + " INTEGER," + KEY_DATE + " TEXT" + ")";
db.execSQL(CREATE_CONTACTS_TABLE);
}
// Getting Specific Contacts
public List<Contact> getSpecificContacts(String Date) {
List<Contact> contactList = new ArrayList<Contact>();
// Select All Query
// String selectQuery = "SELECT * FROM " + TABLE_CONTACTS;
String selectQuery="SELECT * FROM " + TABLE_CONTACTS+ " WHERE "+KEY_DATE+"="+Date ;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Contact contact = new Contact();
contact.set_id(Integer.parseInt(cursor.getString(0)));
contact.set_pName(cursor.getString(1));
contact.set_quantity(Integer.parseInt(cursor.getString(2)));
contact.set_date(cursor.getString(3));
// Adding contact to list
contactList.add(contact);
} while (cursor.moveToNext());
}
// return contact list
return contactList;
}
// Getting All Contacts
public List<Contact> getAllContacts() {
List<Contact> contactList = new ArrayList<Contact>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Contact contact = new Contact();
contact.set_id(Integer.parseInt(cursor.getString(0)));
contact.set_pName(cursor.getString(1));
contact.set_quantity(Integer.parseInt(cursor.getString(2)));
contact.set_date(cursor.getString(3));
// Adding contact to list
contactList.add(contact);
} while (cursor.moveToNext());
}
// return contact list
return contactList;
}
private static final String KEY\u ID=“ID”;
私有静态最终字符串键\u PNAME=“PNAME”;
私有静态最终字符串键\u QUANTITY=“QUANTITY”;
私有静态最终字符串键\u DATE=“DATE”;
公共数据库处理程序(上下文){
super(上下文、数据库名称、null、数据库版本);
}
//创建表
@凌驾
public void onCreate(SQLiteDatabase db){
字符串CREATE_CONTACTS_TABLE=“CREATE TABLE”+TABLE_CONTACTS+”(“
+密钥ID+“整数主键”+“密钥名称+”文本
+键数量+“整数”+“键日期+”文本“+”;
execSQL(创建联系人表);
}
//获取特定联系人
公共列表getSpecificContacts(字符串日期){
List contactList=new ArrayList();
//选择所有查询
//String selectQuery=“SELECT*FROM”+表格\联系人;
String selectQuery=“SELECT*FROM”+表\联系人+”其中“+键\日期+”=“+日期;
SQLiteDatabase db=this.getWritableDatabase();
Cursor Cursor=db.rawQuery(selectQuery,null);
//循环遍历所有行并添加到列表
if(cursor.moveToFirst()){
做{
触点=新触点();
set_id(Integer.parseInt(cursor.getString(0));
set_pName(cursor.getString(1));
set_数量(Integer.parseInt(cursor.getString(2));
set_date(cursor.getString(3));
//将联系人添加到列表中
联系人列表。添加(联系人);
}while(cursor.moveToNext());
}
//返回联系人列表
返回联系人列表;
}
//获取所有联系人
公共列表getAllContacts(){
List contactList=new ArrayList();
//选择所有查询
String selectQuery=“SELECT*FROM”+表格\联系人;
SQLiteDatabase db=this.getWritableDatabase();
Cursor Cursor=db.rawQuery(selectQuery,null);
//循环遍历所有行并添加到列表
if(cursor.moveToFirst()){
做{
触点=新触点();
set_id(Integer.parseInt(cursor.getString(0));
set_pName(cursor.getString(1));
set_数量(Integer.parseInt(cursor.getString(2));
set_date(cursor.getString(3));
//将联系人添加到列表中
联系人列表。添加(联系人);
}while(cursor.moveToNext());
}
//返回联系人列表
返回联系人列表;
}
不要使用上面的查询,而是使用这个查询
String [] columns = new String []{use columns here eg _id, Name,...};
Cursor cursor = db.query(TABLE_CONTACTS, columns, KEY_DATE+ "=?",
new String[] { String.valueOf(Date) }, null, null, null,null);
可能与日期在数据库中的存储方式以及您如何尝试对其进行查询有关;String mYear=String.valueOf(c.get(Calendar.YEAR));String mMonth=String.valueOf(c.get(Calendar.MONTH)+1);String mDay=String.valueOf(c.get(Calendar.DAY/u/u MONTH));//String mHour=String.valueOf(c.get(Calendar.HOUR/OF/u DAY));//int mMinute=(c.get(Calendar.MINUTE))/10;//字符串date=mYear+“/”+mMonth+“/”+mDay;字符串日期=mDay+“/”+mMonth+“/”+mYear;然后://Inserting Contacts Log.d(“Insert:,“Inserting..”);对于(int i=0;我必须添加一些调试日志来获取您正在测试的实际字符串。此外,您可以将检查更改为name,以确定问题是否真的存在于日期或其他方面。SQLite接受所有数据类型,但实际上将所有内容存储为字符串或长字符串。在这种情况下,您将日期存储为字符串。我不会重新记录M结束这个。我认为最好将它存储为数字,即自1970年以来的秒数,然后将其转换为应用程序中的日期。我认为这不太容易出错,并且具有更大的灵活性。
String [] columns = new String []{use columns here eg _id, Name,...};
Cursor cursor = db.query(TABLE_CONTACTS, columns, KEY_DATE+ "=?",
new String[] { String.valueOf(Date) }, null, null, null,null);