2 таблицы в одном базе данных не могу создать
Добавлено: 31 янв 2014, 21:36
Всем привет
месяц назад не имел даже представления что такое БД но все получилось много читал и старался спасибо всем кто помогал теперь передомной стоит задача в одном БД сделать 2 таблицы здесь же в форуме есть отличные примеры и ответы на БД
сам вопрос Создать несколько таблиц в базе данных
я постарался но не получилось
так вот в моем БД есть таблица TABLE_GOODS я сохраняю 4 пункта в нем и даже могу видеть в listveiw
в нем я сохраняю приход
теперь мне надо создать таблицу TABLE_SELL где я буду сохранять что продал или отдал в долг
здесь я и остановился
пожалуйста подскажите мои ошибки и как их исправит сильно не пинайте
здесь создаю БД
здесь работаю на Prihod Activity
здесь Rashod Activity здесь я должен сохранять что продал или отдал в долг
Так вот пожалуйста здесь я какие ошибки делаю или правильно ли все
должен ли я другие имена дат им или так пойдут? KEY_NAME_GOODS, KEY_DATE, KEY_AMOUNT, KEY_COST
лог от сохранения таблиц с ошибками здесь таблица TABLE_GOODS
но все сохраняется в этой таблице
здесь таблица TABLE_SELL она выкидывает ошибку
месяц назад не имел даже представления что такое БД но все получилось много читал и старался спасибо всем кто помогал теперь передомной стоит задача в одном БД сделать 2 таблицы здесь же в форуме есть отличные примеры и ответы на БД
сам вопрос Создать несколько таблиц в базе данных
я постарался но не получилось
так вот в моем БД есть таблица TABLE_GOODS я сохраняю 4 пункта в нем и даже могу видеть в listveiw
в нем я сохраняю приход
теперь мне надо создать таблицу 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 + "]";
}
}Код: Выделить всё
public class DBHandlerImpl extends SQLiteOpenHelper implements DBHandler<Goods>{
private static final int DATABASE_VERSION = 3;
private static final String DATABASE_NAME = "app_base";
private static final String TABLE_GOODS = "users";
private static final String TABLE_SELL = "sell";
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";
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 + "INTEGER PRIMARY KEY, " +
KEY_NAME_GOODS + " TEXT, " +
KEY_DATE + " TEXT, " +
KEY_AMOUNT + " TEXT, " +
KEY_COST + " 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, goods.getName_goods());
values.put(KEY_DATE, goods.getDate());
values.put(KEY_AMOUNT, goods.getAmount());
values.put(KEY_COST, goods.getCost());
db.insert(TABLE_SELL, null, values);
db.close();
}
Код: Выделить всё
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();
}Код: Выделить всё
public class Rashod extends Activity{
private DBHandler<Goods> db;
private Goods goods;
private EditText editRashod;
private EditText editDateRashod;
private EditText editAmountRashod;
private EditText editCostRashod;
private Button btn_rashod_save;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.rashod);
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);
editRashod = (EditText)findViewById(R.id.edtTovar);
editDateRashod = (EditText)findViewById(R.id.editDate);
editAmountRashod = (EditText)findViewById(R.id.editAmount);
editCostRashod = (EditText)findViewById(R.id.editCost);
btn_rashod_save = (Button)findViewById(R.id.btn_rashod_save);
db = new DBHandlerImpl(this);
}
public void saveRashod(View v){
AlertDialog.Builder builder = new AlertDialog.Builder(Rashod.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, editRashod.getText().toString(),
editDateRashod.getText().toString(),
editAmountRashod.getText().toString(),
editCostRashod.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();
}
}должен ли я другие имена дат им или так пойдут? KEY_NAME_GOODS, KEY_DATE, KEY_AMOUNT, KEY_COST
Код: Выделить всё
String queryLose = "Create Table " + TABLE_SELL + "(" + KEY_ID + "INTEGER PRIMARY KEY, " +
KEY_NAME_GOODS + " TEXT, " +
KEY_DATE + " TEXT, " +
KEY_AMOUNT + " TEXT, " +
KEY_COST + " TEXT)";
db.execSQL(queryLose);
но все сохраняется в этой таблице
Код: Выделить всё
01-31 02:07:25.992 28544-28544/uz.akrampulatov.app E/SQLiteLog﹕ (1) no such table: sell
01-31 02:07:25.992 28544-28544/uz.akrampulatov.app E/SQLiteDatabase﹕ Error inserting amount=5 name_goods=nokia 1208 date=31.01.2014 cost=100
android.database.sqlite.SQLiteException: no such table: sell (code 1): , while compiling: INSERT INTO sell(amount,name_goods,date,cost) VALUES (?,?,?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
at uz.akrampulatov.app.activity.db.DBHandlerImpl.add(DBHandlerImpl.java:71)
at uz.akrampulatov.app.activity.db.DBHandlerImpl.add(DBHandlerImpl.java:12)
at uz.akrampulatov.app.activity.Prihod$1.onClick(Prihod.java:58)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)Код: Выделить всё
01-31 02:09:48.836 28544-28544/uz.akrampulatov.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at uz.akrampulatov.app.activity.Rashod$1.onClick(Rashod.java:48)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)