2015-11-12 2 views
0

Моих MainActivity выглядит следующим образом:Как вставить записи в базу данных на Android?

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.iq_test); 

    DBHandler db = new DBHandler(this); 

    // Inserting Questions 
    db.addQuestion(new Question("1. Question1", 1)); 
    db.addQuestion(new Question("2. Question2", 2)); 

    // Inserting Answers 
    db.addAnswer(new Answer("2", 1, 0)); 
    db.addAnswer(new Answer("3", 1, 0)); 
    db.addAnswer(new Answer("4", 1, 1)); 
    db.addAnswer(new Answer("5", 1, 0)); 

    // Reading all Questions 
    List<Question> questions = db.getAllQuestions(); 
    // Reading all Answers 
    List<Answer> answers = db.getAllAnswers(); 

    // other code 
} 

я создал новый файл Java и я переехавшая часть коды там. Моя новая деятельность выглядит следующим образом:

public class DatabaseContent extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.iq_test); 

    DBHandler db = new DBHandler(this); 

    // Inserting Questions 
    db.addQuestion(new Question("1. Question1", 1)); 
    db.addQuestion(new Question("2. Question2", 2)); 

    // Inserting Answers 
    db.addAnswer(new Answer("2", 1, 0)); 
    db.addAnswer(new Answer("3", 1, 0)); 
    db.addAnswer(new Answer("4", 1, 1)); 
    db.addAnswer(new Answer("5", 1, 0)); 
} 

Код ramaining из MainActivity выглядит следующим образом:

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.iq_test); 

    DBHandler db = new DBHandler(this); 

    // Reading all Questions 
    List<Question> questions = db.getAllQuestions(); 
    // Reading all Answers 
    List<Answer> answers = db.getAllAnswers(); 

    // other code 
} 

Я хочу, чтобы вставить записи в базе данных из DatabaseContent деятельности и в MainActivity я хочу только для чтения их. Я знаю, что в java это не похоже на php на файлы include, но вроде. С помощью этого кода записи не будут вставлены в базу данных. Кроме того, когда воссоздается MainActivity, я хочу, чтобы данные не были вставлены снова. Как я могу это сделать? Благодаря!

ответ

0

Внутри вашего DatabaseHelper класса в то время как переопределение OnCreate метод

DatabaseHelper extends SQLiteOpenHelper { 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(//Create your table first); 
     --this will insert the master data when the table will be created for the first time 
    db.execSQL("INSERT INTO " + TABLE + " (" + COL1 + ", " + COL2 + "," + COL3 + "," + COL4 + "," + COL5 + ","+COL6+")" + 
      " VALUES(VAL1,VAL2,VAL3,VAL4,VAL5,VAL6);"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    } 
} 
+0

Да, у меня уже есть это. Я просто хочу, чтобы 'db.addQuestion' и' db.addAnswer' были добавлены из другого действия. В этом случае активность 'DatabaseContent', а не' MainActivity'. –

+0

Просьба поделиться кодом для DBHandler – bond007

+0

Извините, но я не могу отредактировать свой пост. Это [мой DBHandler] (http://www.gogo.ro/29.txt) –

0

Не может видеть вашу вставку и получать запросы, но я рекомендую следовать правильной практике программирования вставки данных с использованием моделей и реализации базового класса Столбцы, который дает вам удобные утилиты, такие как _ID, Count и другие вещи. Вы можете использовать этот учебник как walk through

+0

Спасибо. У вас есть представление о том, как я могу решить эту проблему? Это мой [DBHandler] (http://www.gogo.ro/29.txt) –

Смежные вопросы