У меня есть таблица с именем temp, в которой есть только два столбца: адрес электронной почты и пароль.

Он создается на одном первом действии main.java. Я хочу получить эти emailid и password в другом действии, называемом arclist.java. Как? Вот мой код для выборки данных из таблицы Temp, но он выдает ошибку:

public class MainScreen extends Activity

{

//protected static final String Temp1 = null;
//protected static final String Temp1 =null;
ImageButton imgScanButton,imgMyOffersButton;
SQLiteDatabase db;
DatabaseHelper dbHelper;
protected String emailid;
protected String[] columns;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainscreen);
     db=dbHelper.getWritableDatabase();
    //db = dbHelper.getReadableDatabase();
    try{
          //db=openOrCreateDatabase("baab",SQLiteDatabase.CREATE_IF_NECESSARY,null);
          //db.openDatabase();
         // db.execSQL("Create Table Temp1(emailid integer,Password integer)");
          }catch(SQLException e)
          {
              e.getMessage();
          }
    imgScanButton = (ImageButton) findViewById(R.id.imgbtnScan);
    imgMyOffersButton = (ImageButton) findViewById(R.id.imgbtnMyOffers);

    CursorFactory factory;
    try {

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    imgScanButton.setOnClickListener(new OnClickListener()
    {



         public void onClick(View arg0) 
                {

             Cursor c=db.query("Temp01", columns, null, null, null, null, null);
            // Cursor cursor = db.query("Temp4", columns,
                     // null, null, null, null, null);
                    TextView tv = (TextView) findViewById(R.id.textView1);
                    tv.setText(c.getString(0));
                    c.moveToFirst();
                }
            });

        db.close(); 

        }

Logcat и его принудительное закрытие:

    10-19 13:12:06.992: E/AndroidRuntime(24732): FATAL EXCEPTION: main
 10-19 13:12:06.992: E/AndroidRuntime(24732): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.checkinfo/com.example.checkinfo.MainScreen}: java.lang.NullPointerException
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at android.app.ActivityThread.access$2300(ActivityThread.java:125)
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at android.os.Handler.dispatchMessage(Handler.java:99)
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at android.os.Looper.loop(Looper.java:123)
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at android.app.ActivityThread.main(ActivityThread.java:4627)
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at java.lang.reflect.Method.invokeNative(Native Method)
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at java.lang.reflect.Method.invoke(Method.java:521)
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at dalvik.system.NativeStart.main(Native Method)
 10-19 13:12:06.992: E/AndroidRuntime(24732): Caused by: java.lang.NullPointerException
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at com.example.checkinfo.MainScreen.onCreate(MainScreen.java:38)
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
 10-19 13:12:06.992: E/AndroidRuntime(24732):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)

person Mayur Sonagara    schedule 19.10.2012    source источник
comment
Очевидно, что когда вы вызываете db.isOpen(), db имеет значение null. Исследуй это.   -  person Egor    schedule 19.10.2012
comment
Мой ответ работает или вы еще не использовали его?   -  person Nitin    schedule 19.10.2012
comment
nitin --›но ошибка в курсоре c=db.query(Temp, columns, null, null, null, null, null); --›создать константу Temp в MainScreen.java... у меня уже есть имя таблицы temp. ... в моей базе данных.. тогда как получить эту таблицу в этом файле.... что мне делать?   -  person Mayur Sonagara    schedule 19.10.2012


Ответы (1)


установите db=dbHelper.getWritableDatabase();, и не будет исключения нулевого указателя. И после

Cursor c=db.query(Temp, columns, null, null, null, null, null);

используйте c.moveToFirst(); хорошо

Cursor c=db.query("Temp01", columns, null, null, null, null, null);
 c.moveToFirst();

            // Cursor cursor = db.query("Temp4", columns,
                     // null, null, null, null, null);
                    TextView tv = (TextView) findViewById(R.id.textView1);
                    tv.setText(c.getString(0));
person Nitin    schedule 19.10.2012
comment
при нажатии кнопки укажите android.database.sqlite.sqlitecursor@44eLLkkD в текстовом представлении... - person Mayur Sonagara; 19.10.2012
comment
вы должны перейти к первому после оператора Cursor c=db.query(Temp, columns, null, null, null, null, null); в порядке - person Nitin; 19.10.2012