Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 祝酒词_Android_Sqlite_Android Listview - Fatal编程技术网

Android 祝酒词

Android 祝酒词,android,sqlite,android-listview,Android,Sqlite,Android Listview,我正在尝试从我的数据库中选择与在我的listview中单击的项目匹配的特定字段,当我运行应用程序并单击某个应用程序崩溃的任何项目时,我的代码中有什么错误 这是来自logcat的错误 11-28 16:08:50.168: E/AndroidRuntime(27284): FATAL EXCEPTION: main 11-28 16:08:50.168: E/AndroidRuntime(27284): android.database.sqlite.SQLiteException: near "

我正在尝试从我的数据库中选择与在我的listview中单击的项目匹配的特定字段,当我运行应用程序并单击某个应用程序崩溃的任何项目时,我的代码中有什么错误

这是来自logcat的错误

11-28 16:08:50.168: E/AndroidRuntime(27284): FATAL EXCEPTION: main
11-28 16:08:50.168: E/AndroidRuntime(27284): android.database.sqlite.SQLiteException: near "General": syntax error: , while compiling: SELECT Region,City,Address,Contact FROM tblHospitals WHERE HospitalName = Bernardino General Hospital
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at com.dr.droid.lee.Health.onListItemClick(Health.java:54)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.app.ListActivity$2.onItemClick(ListActivity.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.widget.AdapterView.performItemClick(AdapterView.java:292)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.widget.AbsListView.performItemClick(AbsListView.java:1071)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:2527)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.widget.AbsListView$1.run(AbsListView.java:3181)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.os.Handler.handleCallback(Handler.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.os.Handler.dispatchMessage(Handler.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.os.Looper.loop(Looper.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at android.app.ActivityThread.main(ActivityThread.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at java.lang.reflect.Method.invokeNative(Native Method)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at java.lang.reflect.Method.invoke(Method.java:511)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
11-28 16:08:50.168: E/AndroidRuntime(27284):    at dalvik.system.NativeStart.main(Native Method)
11-2816:08:50.168:E/AndroidRuntime(27284):致命异常:main
11-28 16:08:50.168:E/AndroidRuntime(27284):android.database.sqlite.SQLiteException:接近“常规”:编译时语法错误:,选择地区、城市、地址、来自TBLHospitalName=Bernardino综合医院的联系方式
11-28 16:08:50.168:E/AndroidRuntime(27284):在android.database.sqlite.SQLiteCompiledSql.native_编译(本机方法)
11-28 16:08:50.168:E/AndroidRuntime(27284):在android.database.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java)
11-28 16:08:50.168:E/AndroidRuntime(27284):在android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java)上
11-28 16:08:50.168:E/AndroidRuntime(27284):在android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java)上
11-28 16:08:50.168:E/AndroidRuntime(27284):位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java)
11-28 16:08:50.168:E/AndroidRuntime(27284):位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java)
11-28 16:08:50.168:E/AndroidRuntime(27284):位于android.database.sqlite.SQLiteQuery.(SQLiteQuery.java)
11-28 16:08:50.168:E/AndroidRuntime(27284):位于android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java)
11-28 16:08:50.168:E/AndroidRuntime(27284):位于android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java)
11-28 16:08:50.168:E/AndroidRuntime(27284):位于android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java)
11-28 16:08:50.168:E/AndroidRuntime(27284):在com.droid.lee.Health.onListItemClick(Health.java:54)
11-28 16:08:50.168:E/AndroidRuntime(27284):在android.app.ListActivity$2.onItemClick(ListActivity.java)
11-28 16:08:50.168:E/AndroidRuntime(27284):在android.widget.AdapterView.performItemClick(AdapterView.java:292)
11-28 16:08:50.168:E/AndroidRuntime(27284):在android.widget.AbsListView.performItemClick(AbsListView.java:1071)
11-28 16:08:50.168:E/AndroidRuntime(27284):在android.widget.AbsListView$PerformClick.run(AbsListView.java:2527)
11-28 16:08:50.168:E/AndroidRuntime(27284):在android.widget.AbsListView$1.run(AbsListView.java:3181)
11-28 16:08:50.168:E/AndroidRuntime(27284):在android.os.Handler.handleCallback(Handler.java)上
11-28 16:08:50.168:E/AndroidRuntime(27284):位于android.os.Handler.dispatchMessage(Handler.java)
11-28 16:08:50.168:E/AndroidRuntime(27284):在android.os.Looper.loop(Looper.java)上
11-28 16:08:50.168:E/AndroidRuntime(27284):位于android.app.ActivityThread.main(ActivityThread.java)
11-28 16:08:50.168:E/AndroidRuntime(27284):位于java.lang.reflect.Method.Invokenactive(本机方法)
11-28 16:08:50.168:E/AndroidRuntime(27284):在java.lang.reflect.Method.invoke(Method.java:511)
11-28 16:08:50.168:E/AndroidRuntime(27284):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)上
11-28 16:08:50.168:E/AndroidRuntime(27284):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
11-28 16:08:50.168:E/AndroidRuntime(27284):在dalvik.system.NativeStart.main(本机方法)
这是我的班级档案

public class Health extends ListActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.health);
        displayHospitals();
        }

    public void displayHospitals (){
        final ListView lv = getListView();
        DbHelper tblHL = new DbHelper(this);
        tblHL.open();
        ArrayList<String> result = tblHL.getHData();
        result = tblHL.getHData();
        setListAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, result));
        lv.setTextFilterEnabled(true);

         tblHL.close();
         }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);
        String hosp = (String)getListAdapter().getItem(position);
        String quer = "SELECT Region,City,Address,Contact FROM tblHospitals WHERE HospitalName = " +hosp ;
        SQLiteDatabase mydb = openOrCreateDatabase("dbDrDroid", MODE_PRIVATE, null);
        Cursor c = mydb.rawQuery(quer, null);
        c.moveToFirst();
        Toast.makeText(this, c.toString(), Toast.LENGTH_SHORT).show();
        }


}
公共类运行状况扩展ListActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.health);
显示医院();
}
公立医院(){
最终ListView lv=getListView();
DbHelper tblHL=新的DbHelper(this);
tblHL.open();
ArrayList result=tblHL.getHData();
结果=tblHL.getHData();
setListAdapter(新阵列适配器)(此,
android.R.layout.simple_list_item_1,result));
lv.setTextFilterEnabled(真);
tblHL.close();
}
@凌驾
受保护的void onListItemClick(列表视图l、视图v、整数位置、长id){
//TODO自动生成的方法存根
super.onListItemClick(左、右、位置、id);
字符串hosp=(字符串)getListAdapter().getItem(位置);
String query=“选择地区、城市、地址、来自TBL医院的联系人,HospitalName=“+hosp;
SQLiteDatabase mydb=openOrCreateDatabase(“dbDrDroid”,MODE_PRIVATE,null);
游标c=mydb.rawQuery(query,null);
c、 moveToFirst();
Toast.makeText(this,c.toString(),Toast.LENGTH_SHORT).show();
}
}

我认为您需要这样做,以确保查询正确处理医院名称中的空格:

String quer = "SELECT Region,City,Address,Contact FROM tblHospitals WHERE HospitalName = \"" +hosp + "\"";

您必须更改下一行

String quer = "SELECT Region,City,Address,Contact FROM tblHospitals WHERE HospitalName = '" +hosp+"'" ;

因为HospitalName是一条文本

谢谢,先生,应用程序没有崩溃,但它显示了一条wierd toast消息“android.database.sqlite”。SQLiteCursor@40e8e230“您正试图将光标的字符串表示形式设置为消息:c.toString()。确保首先从光标获取正确的列,然后获取该列的值。在你的吐司里用这个。类似于:c.getString(c.getColumnIndex(MESSAGE_ROW_ID));先生,我该怎么做?对不起,我是android编程新手。我将我的toast改为:toast.makeText(this,c.getString(c.getColumnIndex(“Region”)),toast.LENGTH_SHORT.show();应用程序再次崩溃,将该特定代码段包含在try中。。捕获{}block并找出它到底抛出了什么异常。谢谢,先生,应用程序没有崩溃,但它显示了一条wierd toast消息“android.database.sqlite”。SQLiteCursor@40e8e230“这仍然意味着,您正试图将光标引用直接显示为字符串。请将医院用引号括起来。”。。