Извлечение данных из sqlite в texxtview / edittext - PullRequest
0 голосов
/ 12 ноября 2018

enter image description here

Это не компилируется, и я понятия не имею, почему ... Новичок в sqlite и пытался ответить на какой-то вопрос о переполнении стека, но не смог понять это. Модальный класс - MainDataHelper

код

     MainDataHelper myDatabaseHelper = new MainDataHelper(getActivity());
    myDatabaseHelper.openDataBase();

    String text = myDatabaseHelper.getMostMessagesSent(); //this is the method to query

    myDatabaseHelper.close();

    mMostMessagesSent.setText(text);
    mMostMessagesSent.setTextColor(Color.WHITE);

Helper

public class MainDataHelper extends Activity {
private int TotalMessagesSent;
private int TotalMessagesRecieved;
private int TotalMessages;
private String TotalTimeSpent;
private String MostMessagesSent;
private String MostMessagesRecieved;
private String MostTexted;
private String MostTimeSpent;
private int QuizTaken;
private int QuizTakers;
private int Reviewed;
private int Reviews;

public MainDataHelper() {
    TotalMessagesSent = 0;
    TotalMessagesRecieved = 0;
    TotalMessages = 0;
    TotalTimeSpent = "";
    MostMessagesSent = "";
    MostMessagesRecieved = "";
    MostTexted = "";
    MostTimeSpent = "";
    QuizTaken = 0;
    QuizTakers = 0;
    Reviewed = 0;
    Reviews = 0;
}
public MainDataHelper( int TotalMessagesSent, int TotalMessagesRecieved, int TotalMessages, String TotalTimeSpent,String MostMessagesSent, String MostMessagesRecieved, String MostTexted, String MostTimeSpent,int QuizTaken, int QuizTakers, int Reviewed, int Reviews) {
    TotalMessagesSent = TotalMessagesSent;
    TotalMessagesRecieved = TotalMessagesRecieved;
    TotalMessages = TotalMessages;
    TotalTimeSpent = TotalTimeSpent;
    MostMessagesSent = MostMessagesSent;
    MostMessagesRecieved = MostMessagesRecieved;
    MostTexted = MostTexted;
    MostTimeSpent = MostTimeSpent;
    QuizTaken = QuizTaken;
    QuizTakers = QuizTakers;
    Reviewed = Reviewed;
    Reviews = Reviews;
}

public int getTotalMessagesSent() {
    return TotalMessagesSent;
}
public int getTotalMessagesRecieved() {
    return TotalMessagesRecieved;
}
public int getTotalMessages() {
    return TotalMessages;
}
public String getTotalTimeSpent() {
    return TotalTimeSpent;
}
public String getMostMessagesSent() {
    return MostMessagesSent;
}
public String getMostMessagesRecieved() {
    return MostMessagesRecieved;
}
public String getMostTexted() {
    return MostTexted;
}
public String getMostTimeSpent() {
    return MostTimeSpent;
}
public int getQuizTaken() {
    return QuizTaken;
}
public int getQuizTakers() {
    return QuizTakers;
}
public int getReviewed() {
    return Reviewed;
}
public int getReviews() {
    return Reviews;
}


public void setTotalMessagesSent(int TotalMessagesSent) {
    TotalMessagesSent = TotalMessagesSent;
}
public void setTotalMessagesRecieved(int TotalMessagesRecieved) {
    TotalMessagesRecieved = TotalMessagesRecieved;
}
public void setTotalMessages(int TotalMessages) {
    TotalMessages = TotalMessages;
}
public void setTotalTimeSpent(String TotalTimeSpent) { TotalTimeSpent = TotalTimeSpent; }
public void setMostMessagesSent(String MostMessagesSent) {
    MostMessagesSent = MostMessagesSent;
}
public void setMostMessagesRecieved(String MostMessagesRecieved) {
    MostMessagesRecieved = MostMessagesRecieved;
}
public void setMostTexted(String MostTexted) {
    MostTexted = MostTexted;
}
public void setMostTimeSpent(String MostTimeSpent) { MostTimeSpent = MostTimeSpent; }
public void setQuizTaken(int QuizTaken) {
    QuizTaken = QuizTaken;
}
public void setQuizTakers(int QuizTakers) {
    QuizTakers = QuizTakers;
}
public void setReviewed(int Reviewed) { Reviewed = Reviewed; }

public void setReviews(int Reviews) {
    Reviews = Reviews;
}

}

............................................... .................................................. .................................................. .................................................. .................

1 Ответ

0 голосов
/ 12 ноября 2018

Не компилируется по нескольким причинам.

  1. Во-первых, у MainDataHelper нет конструктора, который принимает / принимает действие. MainDataHelper имеет два конструктора, один из которых не имеет параметров, а другой - 12 параметров. Вы должны использовать один из доступных конструкторов при создании экземпляра объекта MainDataHelper.

например. MainDataHelper myDatabaseHelper = new MainDataHelper(); будет компилироваться.

  1. В MainDataHelper нет метода openDatabase , вам придется либо добавить такой метод, либо убрать строку myDatabaseHelper.openDataBase();

  2. В MainDataHelper отсутствует метод close , вам нужно будет либо добавить такой метод, либо убрать строку myDatabaseHelper.close();

Учитывая, что вы хотите использовать базу данных SQLite, вы будете использовать подкласс класса SQLiteOpenHelper, который будет вызываться из действия или фрагмента (или даже многих из них).

Прежде чем даже подумать о написании строки кода, вам необходимо понять ваши требования к базе данных и иметь какой-то дизайн (схему). Игнорируя это и предполагая (для демонстрации), что вам нужна простая база данных с одной таблицей с именем questions и одним столбцом с именем question, тогда следующим классом может быть такой класс (в данном случае MainDataBaseHelper.java ): -

public class MainDatabaseHelper extends SQLiteOpenHelper {

    public static final String DATABASENAME = "question.db"; //<<<<<<<<<< name of the database
    public static final int DATABASEVERSION = 1; //<<<<<<<<<< version number of the database
    public static final String TABLE_QUESTION = "question"; //<<<<<<<<<< name of the quiz table
    public static final String COLUMN_QUESTION_QUESTION = "question";

    public MainDatabaseHelper(Context context) {
        super(context, DATABASENAME, null, DATABASEVERSION);
    }

    //<<<<<<<<<< Called ONCE when the database is first created (first time an attempt is made to open if)
    @Override
    public void onCreate(SQLiteDatabase db) {
        String crt_questiontable_sql = "CREATE TABLE IF NOT EXISTS " + TABLE_QUESTION + "(" +
                COLUMN_QUESTION_QUESTION + " TEXT" +
                ")";
        db.execSQL(crt_questiontable_sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }

    public long addQuestion(String question) {
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_QUESTION_QUESTION,question);
        return this.getWritableDatabase().insert(TABLE_QUESTION,null,cv);
    }

    public Cursor getAllQuestions() {
        return this.getWritableDatabase().query(TABLE_QUESTION,null,null,null,null,null,null);
    }
}

При наличии вышеупомянутого класса ваш код может быть (в качестве простого примера): -

    MainDatabaseHelper myDBHlpr = new MainDatabaseHelper(getActivity()); // Instantiate a MainDatabasehelper object called myDBHlpr

    // Add some questions to the questions table
    myDBHlpr.addQuestion("This is the first question");
    myDBHlpr.addQuestion("This is another question");
    myDBHlpr.addQuestion("Yet another question");

    // Now get all of the questions
    Cursor csr = myDBHlpr.getAllQuestions();

    Log.d("DBINFO","There are " + String.valueOf(csr.getCount()) + " questions in the database.");
    // Loop through all the questions
    while (csr.moveToNext()) {
        Log.d("DBINFO",
                "Question " +
                        String.valueOf(csr.getPosition() + 1) +
                        " is " + csr.getString(csr.getColumnIndex(MainDatabaseHelper.COLUMN_QUESTION_QUESTION))
        );
        mMostMessagesSent.setText(csr.getString(csr.getColumnIndex(MainDatabaseHelper.COLUMN_QUESTION_QUESTION));
    }
    csr.close(); //<<<<<<<<<< Should always close Cursor when done with it.

    //mMostMessagesSent.setText(text); //<<<<<<<<<< done in the loop through the cursor (for demonstration very likely only the last question will be seen)
    mMostMessagesSent.setTextColor(Color.WHITE);

При запуске (в первый раз) журнал будет включать: -

11-12 20:17:16.345 1376-1376/? D/DBINFO: There are 3 questions in the database.
11-12 20:17:16.345 1376-1376/? D/DBINFO: Question 1 is This is the first question
11-12 20:17:16.345 1376-1376/? D/DBINFO: Question 2 is This is another question
11-12 20:17:16.345 1376-1376/? D/DBINFO: Question 3 is Yet another question

Кроме того, последний вопрос (который может быть или не быть последним добавленным вопросом) будет отображаться в TextView.

  • Обратите внимание, что 3 строки будут добавлены в таблицу при каждом запуске выше.
  • Обратите внимание, что это просто задумано как введение / демонстрация, необходимо сделать гораздо больше, например, создать базу данных.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...