如何在android中使用游标(sqlite查询)搜索数据库

要须心地收汗马,孔孟行世目杲杲。这篇文章主要讲述如何在android中使用游标(sqlite查询)搜索数据库相关的知识,希望能为你提供帮助。
我是一个android初学者。我正在尝试设计这个简单的应用程序,它使用editText视图从用户获取城市名称,比较数据库中的城市名称,并返回该城市的邮政编码。现在,我遇到了游标实现的问题。请帮忙。如何查询数据库以获取相应的代码。

EditText city; Button add,show1; RadioGroup choose; String k; @Override public void onCreate(Bundle savedInstanceState) { try { super.onCreate(savedInstanceState); setContentView(R.layout.main); //final ContentValues values = new ContentValues(); city=(EditText)findViewById(R.id.editText1); add=(Button)findViewById(R.id.add); choose=(RadioGroup)findViewById(R.id.radio01); show1=(Button)findViewById(R.id.button1); k=city.getText().toString(); createDatabase(); } catch(Exception e) {}show1.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View v) { // TODO Auto-generated method stub db=openOrCreateDatabase(DATABASE_NAME,Context.MODE_PRIVATE,null); try{if(k == "CITY") { String[] result_columns=new String[]{"_id","CITY","CODE"}; Cursor cursor = db.query(TABLE_NAME, result_columns, "CITY" +"=?", new String[]{"k"}, null, null, null); cursor.moveToFirst(); String xnewcode=cursor.getString(0); Toast.makeText(activity1.this, xnewcode, Toast.LENGTH_LONG).show(); cursor.moveToNext(); //db.close(); }} catch(Exception e) { Toast.makeText(activity1.this,"Fault in showing " + e,Toast.LENGTH_LONG).show(); }}});

答案
CursormCursor = db.rawQuery("select ZIPCODE from TABLENAME where CITYNAME= ? ", new String[]{"NEWYORK"});

希望你只得到单一的结果。
然后从(字符串意味着)mCursor.getString(coloumn_id)得到它
另一答案我想你忘记了循环结果
String[] result_columns=new String[]{"_id","CITY","CODE"}; Cursor cursor = db.query(TABLE_NAME, result_columns, "CITY" +"=?", new String[]{"k"}, null, null, null); do {String xnewcode = cursor.getString(0); System.ouot.println("...display the result..."+xnewcode); }while (cursor.moveToNext()); }

看看Sample project
要么
关于sqlite database for android的教程
【如何在android中使用游标(sqlite查询)搜索数据库】谢谢迪帕克
另一答案我想你已经忘记了一些检查。但是,它实际上取决于编写城市的语言 -SQLite运算符“LIKE”仅对英文字母不区分大小写。如果您的城市使用其他语言,请考虑将它们以大写/小写形式存储在数据库中,并将输入字符串转换为java(String.toUpper / LowerCase())中的大写/小写。
String[] result_columns=new String[]{"_id","CITY","CODE"}; Cursor cursor = db.query(TABLE_NAME, result_columns, "CITY" +" like '%?%'", new String[]{"k"}, null, null, null); if(cursor != null) { while(cursor.moveToNext()) { String xnewcode=cursor.getString(1); Toast.makeText(activity1.this, xnewcode, Toast.LENGTH_LONG).show(); } }

您可以将所有结果存储在一个数组中,并将其显示给用户,要求他选择正确的结果。
编辑:如果您不熟悉,“x LIKE Y”语句将x与Y中任何子字符串进行比较,长度为x = length。这非常有用,因为您无法保证用户将输入整个城市名称。因此,如果用户输入“york”,我的示例中,Cursor将返回“new york”,“yorkshire”,“york”等值。
另一答案
Cursor cursor = db.rawQuery("select _id,city,code FROM city where city_name like '"+s+"%' order by city", null);

s是搜索框中输入字符的字符串
使用下面的链接它在Android应用程序开发中非常有用。
http://samir-mangroliya.blogspot.in/2012/05/android-sectioned-listview-with-search_6865.html

    推荐阅读