我是一名机器人初学者。我正在尝试设计这个简单的应用程序,它使用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();
}
}
});
答案 0 :(得分:0)
Cursor mCursor = db.rawQuery("select ZIPCODE from TABLENAME where CITYNAME= ? ", new String[]{"NEWYORK"});
希望你只得到单一结果。
然后从中获取它(包括字符串意味着)mCursor.getString(coloumn_id)
答案 1 :(得分:0)
我想你忘了把结果放在循环中
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());
}
或
上的教程由于 迪帕克
答案 2 :(得分:0)
我认为你忘记了一些检查。但是,它实际上取决于编写城市的语言 - 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”,我的示例将返回“new york”,“yorkshire”,“york”等值。
答案 3 :(得分:0)
Cursor cursor = db.rawQuery("select _id,city,code
FROM city where city_name like '"+s+"%' order by city", null);
是搜索框中输入字符的字符串
使用以下链接,它在Android应用开发中非常有用。
http://samir-mangroliya.blogspot.in/2012/05/android-sectioned-listview-with-search_6865.html