【问题标题】:I have table called temp, which have only two columns: emailid and password我有一个名为 temp 的表,它只有两列:emailid 和密码
【发布时间】:2012-10-19 07:47:09
【问题描述】:

它是在第一个活动 main.java 上创建的。我想在另一个名为 arclist.java 的活动中得到这个emailidpassword。如何?这是我从表 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):致命异常:主要 10-19 13:12:06.992: E/AndroidRuntime(24732): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.example.checkinfo/com.example.checkinfo.MainScreen}: java.lang.NullPointerException 10-19 13:12:06.992: E/AndroidRuntime(24732): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 10-19 13:12:06.992: E/AndroidRuntime(24732): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 10-19 13:12:06.992: E/AndroidRuntime(24732): 在 android.app.ActivityThread.access$2300(ActivityThread.java:125) 10-19 13:12:06.992: E/AndroidRuntime(24732): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 10-19 13:12:06.992: E/AndroidRuntime(24732): 在 android.os.Handler.dispatchMessage(Handler.java:99) 10-19 13:12:06.992: E/AndroidRuntime(24732): 在 android.os.Looper.loop(Looper.java:123) 10-19 13:12:06.992: E/AndroidRuntime(24732): 在 android.app.ActivityThread.main(ActivityThread.java:4627) 10-19 13:12:06.992: E/AndroidRuntime(24732): 在 java.lang.reflect.Method.invokeNative(Native Method) 10-19 13:12:06.992: E/AndroidRuntime(24732): 在 java.lang.reflect.Method.invoke(Method.java:521) 10-19 13:12:06.992: E/AndroidRuntime(24732): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 10-19 13:12:06.992: E/AndroidRuntime(24732): 在 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):引起:java.lang.NullPointerException 10-19 13:12:06.992: E/AndroidRuntime(24732): 在 com.example.checkinfo.MainScreen.onCreate(MainScreen.java:38) 10-19 13:12:06.992: E/AndroidRuntime(24732): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 10-19 13:12:06.992: E/AndroidRuntime(24732): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)

【问题讨论】:

  • 很明显,当您调用 db.isOpen() 时,db 为空。调查一下。
  • 我的答案有效还是您尚未使用它。
  • nitin -->但光标 c=db.query(Temp, columns, null, null, null, null, null);-->在 MainScreen.java 中创建常量 Temp 时出错...我已经在我的数据库中有表名 temp.. 那么如何在这个文件中获取这个表....我必须做什么?

标签: android sqlite system.data.sqlite


【解决方案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));

【讨论】:

  • 当按钮点击在文本视图中给出 android.database.sqlite.sqlitecursor@44eLLkkD...
  • 你应该在语句之后移动到第一个光标 c=db.query(Temp, columns, null, null, null, null, null);好的
猜你喜欢
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 2016-03-16
  • 1970-01-01
  • 2010-11-07
相关资源
最近更新 更多