-1
我正在創建一個有兩個數據庫的android應用程序。一個是直接在設備上的脫機SQLite數據庫,另一個是在公共服務器上用於更新脫機的SQLite數據庫。Android SQLite數據插入
這是我將數據插入我的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 2014-12-07 14:36:51
我正是使用這部分代碼才能使它工作: db.execSQL(TABLE_LINE_CREATE); (「INSERT INTO」+ TABLE_LINE +「('」\t + KEY_LINE_NAME +「')VALUES('1');」); (「INSERT INTO」+ TABLE_LINE +「('」\t + KEY_LINE_NAME +「')VALUES('2');」); – Miquello 2014-12-07 15:00:18
好的,這工作?或任何問題? – Siva 2014-12-07 15:02:10