"选取"不行 [英] "select where" not work

查看:127
本文介绍了"选取"不行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的DataBaseAdapter类,我写这样的方法GETALL

 公开名单< AllUserInfor> getAllInfor(INT ID){
    清单< AllUserInfor> allInfor =新的ArrayList< AllUserInfor>();    字符串selectQuery =SELECT姓名,性别FROM MY_TABLE,其中_id ='+身份证+';    光标光标= sqLiteDatabase.rawQuery(selectQuery,NULL);
    如果(cursor.moveToFirst()){
        做{
            AllUserInfor alluserinfor =新AllUserInfor();
            alluserinfor.setName(cursor.getString(1));
            alluserinfor.setGender(cursor.getString(2));
            allInfor.add(alluserinfor);
        }而(cursor.moveToNext());
    }
    返回allInfor;
}

和在第二活性,我

  @覆盖
公共无效的onClick(视图v){
    // TODO自动生成方法存根    开关(v.getId()){    案例R.id.btShow:
        //我得到的ID从第一个活动
        捆绑额外= getIntent()getExtras()。
        ID = extras.getInt(Roomid);
        清单< AllUserInfor> userInfor = mySQLiteAdapter.getAllInfor(ID);
        对于(AllUserInfor AUI:userInfor){
            tvname.setText(aui.getName());
            tvgender.setText(aui.getGender());        }
        打破;
    }}

这是我得到的第一个活动ID的方式

  lvroom.setOnItemClickListener(新AdapterView.OnItemClickListener(){        @覆盖
        公共无效onItemClick(适配器视图<>的ListView,观景,
                INT位置,长的id){
            // TODO自动生成方法存根
            光标=(光标)lvroom.getItemAtPosition(位置);
            INT ITEM_ID = cursor.getInt(cursor.getColumnIndex(SQLiteAdapter.KEY_ID));            意图I =新意图();
            束束=新包();
            bundle.putInt(Roomid,ITEM_ID);
            i.putExtras(包);
            i.setClass(FirstActivity.this,SecondActivity.class);
            startActivityForResult(I,0);        }

在我打的显示按钮INF次活动,没有什么变化,它意味着名字和性别没有在第二个布局显示。哪里是我的错误呢?帮助我

这是我的logcat

  03-10 18:01:20.790:E / AndroidRuntime(1224):致命异常:主要
03-10 18:01:20.790:E / AndroidRuntime(1224):显示java.lang.NullPointerException
03-10 18:01:20.790:E / AndroidRuntime(1224):在com.superman.medreport.SecondActivity.onClick(SecondActivity.java:127)
03-10 18:01:20.790:E / AndroidRuntime(1224):在android.view.View.performClick(View.java:4204)
03-10 18:01:20.790:E / AndroidRuntime(1224):在android.view.View $ PerformClick.run(View.java:17355)
03-10 18:01:20.790:E / AndroidRuntime(1224):在android.os.Handler.handleCallback(Handler.java:725)
03-10 18:01:20.790:E / AndroidRuntime(1224):在android.os.Handler.dispatchMessage(Handler.java:92)
03-10 18:01:20.790:E / AndroidRuntime(1224):在android.os.Looper.loop(Looper.java:137)
03-10 18:01:20.790:E / AndroidRuntime(1224):在android.app.ActivityThread.main(ActivityThread.java:5041)
03-10 18:01:20.790:E / AndroidRuntime(1224):在java.lang.reflect.Method.invokeNative(本机方法)
03-10 18:01:20.790:E / AndroidRuntime(1224):在java.lang.reflect.Method.invoke(Method.java:511)
03-10 18:01:20.790:E / AndroidRuntime(1224):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)
03-10 18:01:20.790:E / AndroidRuntime(1224):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-10 18:01:20.790:E / AndroidRuntime(1224):在dalvik.system.NativeStart.main(本机方法)
03-10 18:01:24.802:E /跟踪(1256):错误打开跟踪文件:没有这样的文件或目录(2)


解决方案

勿投 ID 值到字符串作为其在表中的整数

更改如下您的标准得到值:

 选择姓名,性别FROM MY_TABLE,其中_id =+编号+;

只是删除​​单个',写的+编号+不是 '+身份证+

In My DataBaseAdapter Class, I write a method getAll like that

public List<AllUserInfor> getAllInfor(int id) {
    List<AllUserInfor> allInfor = new ArrayList<AllUserInfor>();

    String selectQuery = "SELECT Name, Gender FROM MY_TABLE where _id = '"+id+"' ";

    Cursor cursor = sqLiteDatabase.rawQuery(selectQuery, null);


    if (cursor.moveToFirst()) {
        do {
            AllUserInfor alluserinfor = new AllUserInfor();               
            alluserinfor.setName(cursor.getString(1));
            alluserinfor.setGender(cursor.getString(2));                
            allInfor.add(alluserinfor);
        } while (cursor.moveToNext());
    }


    return allInfor;
}

and in the second activity, I have

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    switch (v.getId()) {

    case R.id.btShow:
        // I get id from the first activity
        Bundle extras = getIntent().getExtras();
        id = extras.getInt("Roomid");
        List<AllUserInfor> userInfor = mySQLiteAdapter.getAllInfor(id);
        for (AllUserInfor aui : userInfor){
            tvname.setText(aui.getName());
            tvgender.setText(aui.getGender());

        }
        break;
    }

}

this is the way I get id from first activity

lvroom.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> listView, View view,
                int position, long id) {
            // TODO Auto-generated method stub
            cursor = (Cursor) lvroom.getItemAtPosition(position);
            int item_id = cursor.getInt(cursor.getColumnIndex(SQLiteAdapter.KEY_ID));

            Intent i = new Intent();
            Bundle bundle = new Bundle();
            bundle.putInt("Roomid", item_id);               
            i.putExtras(bundle);
            i.setClass(FirstActivity.this, SecondActivity.class);
            startActivityForResult(i, 0);

        }

After I hit the Show button inf second activity, nothing change, its mean that the name and gender are not showed in second layout. Where are my mistakes? Help me

this is my logcat

03-10 18:01:20.790: E/AndroidRuntime(1224): FATAL EXCEPTION: main
03-10 18:01:20.790: E/AndroidRuntime(1224): java.lang.NullPointerException
03-10 18:01:20.790: E/AndroidRuntime(1224):     at com.superman.medreport.SecondActivity.onClick(SecondActivity.java:127)
03-10 18:01:20.790: E/AndroidRuntime(1224):     at android.view.View.performClick(View.java:4204)
03-10 18:01:20.790: E/AndroidRuntime(1224):     at android.view.View$PerformClick.run(View.java:17355)
03-10 18:01:20.790: E/AndroidRuntime(1224):     at android.os.Handler.handleCallback(Handler.java:725)
03-10 18:01:20.790: E/AndroidRuntime(1224):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-10 18:01:20.790: E/AndroidRuntime(1224):     at android.os.Looper.loop(Looper.java:137)
03-10 18:01:20.790: E/AndroidRuntime(1224):     at android.app.ActivityThread.main(ActivityThread.java:5041)
03-10 18:01:20.790: E/AndroidRuntime(1224):     at java.lang.reflect.Method.invokeNative(Native Method)
03-10 18:01:20.790: E/AndroidRuntime(1224):     at java.lang.reflect.Method.invoke(Method.java:511)
03-10 18:01:20.790: E/AndroidRuntime(1224):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-10 18:01:20.790: E/AndroidRuntime(1224):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-10 18:01:20.790: E/AndroidRuntime(1224):     at dalvik.system.NativeStart.main(Native Method)
03-10 18:01:24.802: E/Trace(1256): error opening trace file: No such file or directory (2)

解决方案

Do not cast your id value into the String as its an Integer in your table.

Change your criteria as below to get value:

"SELECT Name, Gender FROM MY_TABLE where _id = "+id+" ";

Just remove the single " ' " and write as "+id+" not '"+id+"'

这篇关于&QUOT;选取&QUOT;不行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆