【问题标题】:My android app stop I don´t know how get a value of SQLite我的 android 应用程序停止我不知道如何获取 SQLite 的值
【发布时间】:2015-03-06 16:53:32
【问题描述】:

我是新程序员,我只需要 SQLite 的一个值(“IdUser”)并解析为 String 变量,但我不知道要捕获它并返回该值。我的应用因此停止了。

Activity.java

public void onClick(View arg0) {

        String LOGIN2 ="Users";
        String eti = loginDataBaseAdapter.CheckEtiqueta(LOGIN2);

        Toast.makeText(getApplicationContext(), eti, Toast.LENGTH_LONG).show();


        }

UsersDatabaseHelper.java

    public String CheckEtiqueta(String LOGIN2) {

        Cursor c = db.rawQuery("SELECT * FROM "+LOGIN2+" WHERE IdUser = 20 ORDER BY IdUser LIMIT1", null);

        while (c.moveToNext()) {
             //Sample operation with the Database
             if (c.getString(c.getColumnIndex("IdUser"))!=null) { 
                   LOGIN2=c.getString(c.getColumnIndex("IdUser"));
                   return LOGIN2;
             }
        }
        return LOGIN2;


    }

谢谢

【问题讨论】:

  • 编辑您的问题以从 logcat 发布堆栈跟踪

标签: java android eclipse sqlite


【解决方案1】:

首先,请更正您的 SQL 查询。 以及为什么您返回的变量与函数接收到的相同。你还没有打开你的数据库。 打开数据库。

public void openDatabase()
    {
        database = dbHelper.getWritableDatabase();
    }

然后关闭:

public void closeDatabase()
    {
        if (database != null && database.isOpen())
            database.close();
    }

在 Cursor 语句之前添加 openDatabase() 调用,完成后不要忘记 closeDatabase()

编辑:

理想代码:

public User getUserByID(int userID)
    {
        openDatabase();
        Cursor userByID= database.rawQuery("select * from UsersTable where UserID = " + userID, null);

        User user = new User();

        userByID.moveToFirst();
        user.setName(userByID.getString(userByID.getColumnIndex("UserName")));

        userByID.close();

        closeDatabase();
        return User;
    }

【讨论】:

  • 在我的 DataBaseHelper 中,我有下一个类: public UsersDataBaseAdapter(Context _context) { context = _context; dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION); } public UsersDataBaseAdapter open() 抛出 SQLException { db = dbHelper.getWritableDatabase();返回这个; } 公共无效 close() { db.close(); } 公共 SQLiteDatabase getDatabaseInstance() { 返回数据库; }
  • 顺便说一下,我只需要用户表的值“IdUser”(在我的课程中我关闭/打开)
  • @GabrielDurruti 我已根据您的要求进行了更改
猜你喜欢
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 2012-09-22
  • 1970-01-01
相关资源
最近更新 更多