如何在里面使用Android 1 DataBase 2表

时间:2014-02-01 11:57:11

标签: android sqlite

你好,一周前我对Android数据库了解不多 现在我在桌子上很了解TABLE_GOODS一切都好 创建了我的数据库,所有工作都很完美,现在保存在DB中,甚至我可以看到ListView所有数据库。这很好,但现在我面临其他问题。 我必须在这个DB上创建第二个表TABLE_SELL。 我在做什么? 在Prihod活动中我节省了在TABLE_GOODS来到我店的商品。 在Rashod活动现在我必须保存我在TABLE_SELL出售的东西。 我正在使用类商品来写

public class Goods {
private int id;
private String name_goods;
private String date;
private String amount;
private String cost;

public Goods() {
}

public Goods(int id, String name_goods, String date, String amount, String cost) {
    this.id = id;
    this.name_goods = name_goods;
    this.date = date;
    this.amount = amount;
    this.cost = cost;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName_goods() {
    return name_goods;
}

public void setName_goods(String name_goods) {
    this.name_goods = name_goods;
}

public String getDate() {
    return date;
}

public void setDate(String date) {
    this.date = date;
}

public String getAmount() {
    return amount;
}

public void setAmount(String amount) {
    this.amount = amount;
}

public String getCost() {
    return cost;
}

public void setCost(String cost) {
    this.cost = cost;
}

@Override
public String toString() {
    return "Goods[id: " + id + ", name_goods: " + name_goods + ", date: " + date + ", "   +
            "amount: " + amount + ", cost: " + cost + "]";
} 

这里我正在使用DataBase

public class DBHandlerImpl extends SQLiteOpenHelper  implements DBHandler<Goods>    {

private static final int DATABASE_VERSION = 4;
private static final String DATABASE_NAME = "app_bases";

private static final String TABLE_GOODS = "users";
private static final String KEY_ID = "id";
private static final String KEY_NAME_GOODS = "name_goods";
private static final String KEY_DATE = "date";
private static final String KEY_AMOUNT = "amount";
private static final String KEY_COST = "cost";

private static final String TABLE_SELL = "sell";
private static final String KEY_ID_RASHOD = "id";
private static final String KEY_NAME_GOODS_RASHOD = "name_goods";
private static final String KEY_DATE_RASHOD = "date";
private static final String KEY_AMOUNT_RASHOD = "amount";
private static final String KEY_COST_RASHOD = "cost";

public DBHandlerImpl(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String query = "Create Table " + TABLE_GOODS + "(" + KEY_ID + "INTEGER PRIMARY KEY, " +
                                                        KEY_NAME_GOODS + " TEXT, " +
                                                        KEY_DATE + " TEXT, " +
                                                        KEY_AMOUNT + " TEXT, " +
                                                        KEY_COST + " TEXT);";
    db.execSQL(query);

    String queryLose = "Create Table " + TABLE_SELL + "(" + KEY_ID_RASHOD + "INTEGER PRIMARY KEY, " +
                                                        KEY_NAME_GOODS_RASHOD + " TEXT, " +
                                                        KEY_DATE_RASHOD + " TEXT, " +
                                                        KEY_AMOUNT_RASHOD + " TEXT, " +
                                                        KEY_COST_RASHOD + " TEXT);";
    db.execSQL(queryLose);
}

@Override
public void onUpgrade(SQLiteDatabase db, int i, int i2) {

}

@Override
public void add(Goods goods) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(KEY_NAME_GOODS, goods.getName_goods());
    values.put(KEY_DATE, goods.getDate());
    values.put(KEY_AMOUNT, goods.getAmount());
    values.put(KEY_COST, goods.getCost());
    db.insert(TABLE_GOODS, null, values);

    values.put(KEY_NAME_GOODS_RASHOD, goods.getName_goods());
    values.put(KEY_DATE_RASHOD, goods.getDate());
    values.put(KEY_AMOUNT_RASHOD, goods.getAmount());
    values.put(KEY_COST_RASHOD, goods.getCost());
    db.insert(TABLE_SELL, null, values);
    db.close();
  }  

这里我正在使用PrihodActivity保存TABLE_GOODS

public class Prihod  extends Activity{
private DBHandler<Goods> db;
private Goods goods;
private EditText edtTovar;
private EditText editDate;
private EditText editAmount;
private EditText editCost;
private Button btn_save;
private Button btn_info;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.prihod);
    TextView textTovar = (TextView)findViewById(R.id.textTovar);
    TextView textDate = (TextView)findViewById(R.id.textDate);
    TextView textAmount = (TextView)findViewById(R.id.textAmount);
    TextView textCost = (TextView)findViewById(R.id.textCost);
    edtTovar = (EditText)findViewById(R.id.edtTovar);
    editDate = (EditText)findViewById(R.id.editDate);
    editAmount = (EditText)findViewById(R.id.editAmount);
    editCost = (EditText)findViewById(R.id.editCost);
    btn_save = (Button)findViewById(R.id.btn_save);
    btn_info = (Button)findViewById(R.id.btn_info);
    db = new DBHandlerImpl(this);

}

public void saveTovar(View v){
    AlertDialog.Builder builder = new AlertDialog.Builder(Prihod.this);
    builder.setTitle("Потдвердить сохранение...");
    builder.setMessage("Вы уверены, что хотите сохранить?");
    builder.setIcon(R.drawable.save);
    builder.setPositiveButton("Да", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            goods = new Goods(1, edtTovar.getText().toString(),
                    editDate.getText().toString(),
                    editAmount.getText().toString(),
                    editCost.getText().toString());
            db.add(goods);
            Toast.makeText(getApplicationContext(), "Новый товар сохранен!", Toast.LENGTH_SHORT).show();
        }
    });

    builder.setNegativeButton("Нет", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    });

    builder.show();
}`

1 个答案:

答案 0 :(得分:0)

和第一张桌子一样。我看到你已经创建了第二个表。只是忘了在onUpgrade方法中添加一些内容:类似于:

@Override
public void onUpgrade(SQLiteDatabase db, int i, int i2) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE_GOODS );
db.execSQL("DROP TABLE IF EXISTS "+TABLE_SELL );
   onCreate(db);
}

tutorial。请检查更多。

其他诸如插入,更新,删除操作等每个逻辑都是相同的。只需创建方法就可以执行任何操作。

修改 创建数据库类,如:

public class DBHandlerImpl     {
private static final int DATABASE_VERSION = 4;
private static final String DATABASE_NAME = "app_bases";
private static final String TABLE_GOODS = "users";
private static final String KEY_ID = "id";
private static final String KEY_NAME_GOODS = "name_goods";
private static final String KEY_DATE = "date";
private static final String KEY_AMOUNT = "amount";
private static final String KEY_COST = "cost";

private static final String TABLE_SELL = "sell";
private static final String KEY_ID_RASHOD = "_id";
private static final String KEY_NAME_GOODS_RASHOD = "_name_goods";
private static final String KEY_DATE_RASHOD = "_date";
private static final String KEY_AMOUNT_RASHOD = "_amount";
private static final String KEY_COST_RASHOD = "_cost";


private DbHelper mHelper;
private final Context mContext;
private SQLiteDataBase mDatabase;

private static class DbHelper extends SQLiteOpenHelper{
public DBHandlerImpl(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
String query = "Create Table " + TABLE_GOODS + "(" + KEY_ID + "INTEGER PRIMARY KEY, " +
                                                    KEY_NAME_GOODS + " TEXT, " +
                                                    KEY_DATE + " TEXT, " +
                                                    KEY_AMOUNT + " TEXT, " +
                                                    KEY_COST + " TEXT);";
db.execSQL(query);

String queryLose = "Create Table " + TABLE_SELL + "(" + KEY_ID_RASHOD + "INTEGER PRIMARY KEY, " +
                                                    KEY_NAME_GOODS_RASHOD + " TEXT, " +
                                                    KEY_DATE_RASHOD + " TEXT, " +
                                                    KEY_AMOUNT_RASHOD + " TEXT, " +
                                                    KEY_COST_RASHOD + " TEXT);";
db.execSQL(queryLose);
}

  @Override
  public void onUpgrade(SQLiteDatabase db, int i, int i2) {
  db.execSQL("DROP TABLE IF EXISTS "+TABLE_GOODS );
   db.execSQL("DROP TABLE IF EXISTS "+TABLE_SELL );
   onCreate(db);
 }
}

public DBHandlerImpl (Context c){
mContext = c;
}

public DBHandlerImpl open(){
mHelper = new DbHelper(mContext);
mDatabase = mHelper.getWritableDatabase();
}

public void close(){
mHelper.close();
}

public void add(Goods goods) {
ContentValues values = new ContentValues();
values.put(KEY_NAME_GOODS, goods.getName_goods());
values.put(KEY_DATE, goods.getDate());
values.put(KEY_AMOUNT, goods.getAmount());
values.put(KEY_COST, goods.getCost());
mDatabase.insert(TABLE_GOODS, null, values);    
 }      

public void add_table_SellData(Goods goods ) {
ContentValues cv = new ContentValues();
cv.put(KEY_NAME_GOODS_RASHOD, goods.getName_goods());
cv.put(KEY_DATE_RASHOD, goods.getDate());
cv.put(KEY_AMOUNT_RASHOD, goods.getAmount());
cv.put(KEY_COST_RASHOD, goods.getCost());
mDatabase.insert(TABLE_SELL, null, cv);
}
}

我已经写了所有程序,大致是为了让你明白。所以请忽略名称错误。

在您的活动中,首先打开数据库,然后插入数据,然后关闭数据库。例如:

  DBHandlerImpl db = new DBHandlerImpl(current_context);
  db.open();
  db.add_table_SellData(your_data);
  db.close();

第二次修改

public void saveTovar(View v){
//First Define AlertDialog here
AlertDialog alert;
//Ok now define the builder and initialize it through current context
AlertDialog.Builder builder = new AlertDialog.Builder(Prihod.this);
builder.setTitle("Потдвердить сохранение...");
builder.setMessage("Вы уверены, что хотите сохранить?");
builder.setIcon(R.drawable.save);
builder.setPositiveButton("Да", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        goods = new Goods(1, edtTovar.getText().toString(),
                editDate.getText().toString(),
                editAmount.getText().toString(),
                editCost.getText().toString());

        //Create and initialize the database object here and delete it from oncreate() which already you define
        DBHandlerImpl db = new DBHandlerImpl(Prihod.this);
        //now open the database 
        db.open();
        now insert your data through corresponding methods
        db.add(goods);
        db.add_table_SellData(goods);
        //Now close it
        db.close();
        Toast.makeText(getApplicationContext(), "Новый товар сохранен!", Toast.LENGTH_SHORT).show();
    }
});

builder.setNegativeButton("Нет", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.cancel();
    }
});
//Now initialize the alertdialog through create method of builder
alert = builder.create(); 
//Now show the alertdialog not the  builder   
alert.show();
}