Поскольку я новичок в android. Я разрабатываю небольшое приложение, основанное на управлении запасами одного продукта. Пользователь может добавлять/удалять акции и проверять текущий запас. Я пытался кодировать для получения отдельных данных из базы данных, но не точно. Акция добавлена / удалена успешно в базу данных. Но когда я убиваю или перезапускаю приложение, последнее значение, которое мне нужно, не может найти их.Как получить отдельные данные из базы данных sqlite в android?
Это мой файл базы данных DataBaseHandler.java
package com.example.stockmanager;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DataBaseHandler extends SQLiteOpenHelper{
private SQLiteDatabase sql=null;
private static String CREATE_TABLE="";
public DataBaseHandler(Context context)
{
super(context, Util.DATABASE_NAME, null, Util.DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
CREATE_TABLE = "CREATE TABLE " +Util.STOCK_TABLE + "("
+Util.USER_ID +" INTEGER PRIMARY KEY AUTOINCREMENT, "
+Util.CURRENT_STOCK +" TEXT NOT NULL, "
+Util.DATE +" TEXT NOT NULL, "
+Util.TIME +" TEXT NOT NULL" + ")";
db.execSQL(CREATE_TABLE);
Log.i("Authentication", ""+CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " +Util.STOCK_TABLE);
}
public void insertDetails(Model m)
{
sql=this.getWritableDatabase();
ContentValues cn=new ContentValues();
cn.put(Util.CURRENT_STOCK, m.getCurrentStock());
cn.put(Util.DATE, m.getDate().toString());
cn.put(Util.TIME, m.getTime().toString());
long insertId=sql.insert(Util.STOCK_TABLE, null, cn);
Log.i("new raw inserted", ""+insertId);
}
public List<Model> getAllDetails()
{
List<Model> show=new ArrayList<Model>();
sql=this.getReadableDatabase();
Cursor cursor=null;
String query="SELECT * FROM" +Util.STOCK_TABLE;
cursor=sql.rawQuery(query, null);
cursor.moveToFirst();
while(!cursor.isAfterLast())
{
Model m=new Model();
m.setCurrentStock(cursor.getString(0));
m.setDate(cursor.getString(1));
m.setTime(cursor.getString(2));
show.add(m);
cursor.moveToNext();
}
cursor.close();
sql.close();
return show;
}
public Model getLastStock(int id) {
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.query(Util.STOCK_TABLE, new String[] {Util.CURRENT_STOCK}, Util.USER_ID + "=?",
new String[] { String.valueOf(id) }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
Model m = new Model();
m.setCurrentStock(cursor.getString(0));
Log.i("Message of Current Stock", ""+m);
return m;
}
}
Метод getLastStock() кодируется, чтобы получить, наконец, вошла стоимость акций для дальнейшей эксплуатации.
Это мой Java-файл для добавления/удаления запаса Add_Remove.java
package com.example.stockmanager;
import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Add_Remove extends Activity implements OnClickListener{
private Button btn1,btn2;
private EditText edt;
private DataBaseHandler data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add__remove);
btn1=(Button)findViewById(R.id.button4);
btn2=(Button)findViewById(R.id.button5);
edt=(EditText)findViewById(R.id.editText1);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.add__remove, menu);
return true;
}
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
String number=edt.getText().toString();
int count1=Integer.parseInt(number);
Model m=new Model();
data=new DataBaseHandler(getApplicationContext());
String ss= m.getCurrentStock();
Log.i("CURRENT_STOCK", ""+ss);
int count2;
//While Stock is Added
if(v.equals(btn1))
{
Calendar ci = Calendar.getInstance();
//Getting Date
String CiDate = "" + ci.get(Calendar.DAY_OF_MONTH) + "-" +
(ci.get(Calendar.MONTH) + 1) + "-" +
ci.get(Calendar.YEAR);
//Getting Time
String CiTime =ci.get(Calendar.HOUR) + ":" +
ci.get(Calendar.MINUTE) + ":" +
ci.get(Calendar.SECOND);
if(ss==null)
{
count2=0;
Log.i("Count1", ""+count1);
Log.i("Count2", ""+count2);
int add=count1+count2;
Log.i("ADDED VALUE:", ""+add);
String stock=String.valueOf(add);
m.setCurrentStock(stock);
m.setDate(CiDate);
m.setTime(CiTime);
data.insertDetails(m);
Toast.makeText(this, "Added Successfully", Toast.LENGTH_SHORT).show();
}
else
{
count2=Integer.parseInt(ss);
Log.i("Count1", ""+count1);
Log.i("Count2", ""+count2);
int add=count1+count2;
Log.i("ADDED VALUE:", ""+add);
String stock=String.valueOf(add);
m.setCurrentStock(stock);
m.setDate(CiDate);
m.setTime(CiTime);
data.insertDetails(m);
Toast.makeText(this, "Added Successfully", Toast.LENGTH_SHORT).show();
}
}
//While Stock is Deducted
if(v.equals(btn2))
{
Calendar ci = Calendar.getInstance();
//Getting Date
String CiDate = "" + ci.get(Calendar.DAY_OF_MONTH) + "-" +
(ci.get(Calendar.MONTH) + 1) + "-" +
ci.get(Calendar.YEAR);
//Getting Time
String CiTime =ci.get(Calendar.HOUR) + ":" +
ci.get(Calendar.MINUTE) + ":" +
ci.get(Calendar.SECOND);
if(ss==null)
{
count2=0;
Log.i("Count1", ""+count1);
Log.i("Count2", ""+count2);
int add=count1+count2;
Log.i("ADDED VALUE:", ""+add);
String stock=String.valueOf(add);
m.setCurrentStock(stock);
m.setDate(CiDate);
m.setTime(CiTime);
data.insertDetails(m);
Toast.makeText(this, "Added Successfully", Toast.LENGTH_SHORT).show();
}
else
{
count2=Integer.parseInt(ss);
Log.i("Count1", ""+count1);
Log.i("Count2", ""+count2);
int add=count1-count2;
Log.i("ADDED VALUE:", ""+add);
String stock=String.valueOf(add);
m.setCurrentStock(stock);
m.setDate(CiDate);
m.setTime(CiTime);
data.insertDetails(m);
Toast.makeText(this, "Deducted Successfully", Toast.LENGTH_SHORT).show();
} }
}
}
Помогите мне с соответствующим кодом базы данных, чтобы получить последнюю стоимость акций из базы данных. Чтобы я мог добавить или удалить запас.
Просто мне нужно последнее значение, введенное в таблицу. Но всякий раз, когда я убиваю или перезапускаю приложение, он инициализирует значение count2 как 0. –
да. вы не сохранили это значение. вы можете получить последний с max() – eduyayo
, можете ли вы написать код. так что я могу получить правильную идею. @eduyayo Заранее спасибо –