Я создаю приложение для Android, имеющее две базы данных. One - это автономная база данных SQLite непосредственно на устройстве, а другая - на общедоступном сервере, которая используется для обновления автономного.Вставка данных SQLite SQL
Это способ, которым я вставляя данные в моей базе данных SQLite:
Моя активность:
package com.empekapp;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class Linie extends Activity {
DBAdapter db
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.linie);
openDB();
}
private void openDB(){
db = new DBAdapter(this);
db.open();
db.insertLineRecord("1");
db.insertLineRecord("2");
}
И в моем адаптере базы данных:
public static final String KEY_LINE_ROWID = "_id";
public static final String KEY_LINE_NAME = "line_name";
public static final int COL_LINE_ROWID = 0;
public static final int COL_LINE_NAME = 1;
public static final String[] ALL_LINE_KEYS = new String[] {KEY_LINE_ROWID, KEY_LINE_NAME};
private static final String TABLE_LINE = "lines";
private static final String TABLE_LINE_CREATE =
"create table if not exists " + TABLE_LINE + "("
+ KEY_LINE_ROWID + " integer primary key autoincrement, "
+ KEY_LINE_NAME + " VARCHAR not null unique);";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdapter (Context ctx){
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper{
DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_LINE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_LINE);
}
}
public DBAdapter open(){
db = DBHelper.getWritableDatabase();
return this;
}
public void close(){
DBHelper.close();
}
public void insertLineRecord(String line_name){
db.execSQL("INSERT OR IGNORE INTO " + TABLE_LINE + "('"
+ KEY_LINE_NAME + "') VALUES ('"
+ line_name + "');");
}
Как правило, это решение достаточно для меня .. но данные вставляются в таблицу каждый раз, когда я открываю эту активность, чтобы предотвратить это, я устанавливаю уникальное ограничение, но как вставлять данные только один раз, когда я создаю эту таблицу, чтобы избежать такая ситуация?
Я думаю, это работает, спасибо большое. Я надеюсь, что это исправит все мои проблемы :) – Miquello
Я использовал именно эту часть кода, чтобы она работала: db.execSQL (TABLE_LINE_CREATE); \t \t \t \t \t db.execSQL ("INSERT INTO" + TABLE_LINE + "(" \t + KEY_LINE_NAME + ") ЗНАЧЕНИЯ ('1');"); \t \t \t \t \t db.execSQL ("INSERT INTO" + TABLE_LINE + "(" \t + KEY_LINE_NAME + ") ЗНАЧЕНИЯ ('2');"); – Miquello
ОК это работает? или любой вопрос? – Siva