如何在里面使用Android 1 DataBase 2表(How to work with Android 1 DataBase 2 tables inside)

编程入门 行业动态 更新时间:2024-10-25 23:28:50
如何在里面使用Android 1 DataBase 2表(How to work with Android 1 DataBase 2 tables inside)

您好一周前我对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(); }`

Hello a week ago i didn't know much about Android Database nowadays i understand much at table TABLE_GOODS all is OK created my DB and all is working perfect now saving at DB and even i can see at ListView all DB. That's good but now i am faced with other problem. i have to create second table TABLE_SELL at this DB. what i am doing? at Prihod activity i am saving goods which come to my shop at TABLE_GOODS. at Rashod activity now i have to save what i sell at TABLE_SELL. i am using class Goods to write

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 + "]"; }

here i am working with 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(); }

Here I'm working with PrihodActivity where I save 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(); }`

最满意答案

和第一张桌子一样。 我看到你已经创建了第二个表。 只是忘了在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); }

一个小教程 。 请检查更多。

而其他的东西,如插入,更新,删除操作,每个逻辑是相同的。 只需创建方法就可以做任何你想要的操作。

编辑创建您的数据库类,如:

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(); }

Same thing like first table. I saw you already created the second table. Just forgot to add something inside onUpgrade method: something like:

@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); }

A small tutorial. Just check for more.

And other things like insert, update, delete operations every logic are same. Just create methods are do whatever operation you want.

EDIT Create your database class like :

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); } }

I have written all the programs roughly to make you understand. So please ignore the name errors.

In your activity 1st open the database, then insert data and then close the database.something like:

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

2nd Edit

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(); }

更多推荐

本文发布于:2023-07-30 06:55:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1336711.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:在里面   Android   DataBase   work   tables

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!