我想要对列的整数值求和。 我的代码用来总结:
public int getTotal() {
// TODO Auto-generated method stub
int sum=0;
Cursor cursor = database.rawQuery("SELECT SUM(name) FROM "+dbHelper.getTableName(), null);
if(cursor.moveToFirst()) {
sum=cursor.getInt(0);
}
return sum;
}
我试过的其他方式:
public int sum() {
x=0;
for (int i =list.size(); i>0 ; i--) {
Log.e("sumprice","");
x = x +list.get(i).getName();
}
return x;
}
和 DATABASE HELPER
public class DatabaseHelper extends SQLiteOpenHelper {
private final String TAG = "DatabaseHelper";
private static final String DATABASE_NAME = "db";
private static final String TABLE_NAME = "contacts";
private static final String COLUMN_ID = "_id";
private static final String COLUMN_NAME = "name";
private static final String COLUMN_VALUE = "value";
private static final String COLUMN_NUM = "num";
private static final String COLUMN_TYPE = "type";
private static final String COLUMN_CODE = "CODE";
public static final String COLUMN_ESME = "ESME";
private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" +
COLUMN_ID + " INTEGER PRIMARY KEY," +
COLUMN_NAME + "INTEGER," +
COLUMN_VALUE + "INTEGER," +
COLUMN_NUM + " TEXT," +
COLUMN_TYPE + " TEXT," +
COLUMN_CODE + " TEXT," +
COLUMN_ESME + " TEXT" +
");";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null,8);
Log.i(TAG, "Object created.");
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(DatabaseHelper.class.getName(), "Upgrading database from version "
+ oldVersion + " to " + newVersion + ", which will destroy all old data");
db.execSQL("Drop table if exists " + TABLE_NAME);
onCreate(db);
}
public String getTableName() {
return TABLE_NAME;
}
public String getRowIdName() {
return COLUMN_ID;
}
}
DATABASE处理程序
public class DatabaseHandler {
private final String TAG = "DatabaseHandler";
static final String NAME = "name";
static final String VALUE = "value";
static final String NUM = "num";
static final String TYPE = " type";
static final String CODE = "code";
static final String ESME = "esme";
private DatabaseHelper dbHelper;
private SQLiteDatabase database;
public DatabaseHandler(Context context) {
dbHelper = new DatabaseHelper(context);
Log.i(TAG, "Object created.");
}
public void open() throws SQLException {
database = dbHelper.getWritableDatabase();
}
public void close() {
dbHelper.close();
}
public void insertContact(contac contacts) {
database = dbHelper.getWritableDatabase();
ContentValues cv = new ContentValues();
Log.e("D","1.1");
cv.put(NAME,contacts.getName());
cv.put(VALUE,contacts.getPhoneNumber());
cv.put(NUM,contacts.getNUM());
cv.put(TYPE,contacts.getTYPE());
cv.put(CODE,contacts.getCODE());
cv.put(ESME,contacts.getESME());
Log.e("D","1.2");
// Log.e("",cv);
database.insert(dbHelper.getTableName(), NAME, cv);
Log.e("","1.8");
Log.i(TAG, "Contact added successfully.");
Log.e("","1.9");
}
public void deleteContact(long id) {
database.delete(dbHelper.getTableName(), dbHelper.getRowIdName() + "=" + id, null);
}
public void updateContact(long id) {
ContentValues cv = new ContentValues();
cv.put(NAME, 3123123);
cv.put(VALUE, "12345");
cv.put(NUM, "123543");
cv.put(TYPE, "benzini");
cv.put(CODE, "123543");
cv.put(ESME, "benzini");
database.update(dbHelper.getTableName(), cv, dbHelper.getRowIdName() + "=" + id, null);
}
public List<contac> getAllContacts() {
SQLiteDatabase database = dbHelper.getWritableDatabase();
Log.e("D","1.9");
List<contac> contacts = new ArrayList<contac>();
Log.e("D","1.9");
Cursor cursor = database.query(dbHelper.getTableName(),null, null, null, null, null, null);
Log.e("D","1.9");
cursor.moveToFirst();
Log.e("D","1.9");
while (!cursor.isAfterLast()) {
Log.e("D","1.9");
contac contact= cursorTocontac(cursor);
Log.e("D","1.9");
contacts.add(contact);
Log.e("D","1.9");
cursor.moveToNext();
}
// Make sure to close the cursor
cursor.close();
return contacts;
}
private contac cursorTocontac(Cursor cursor) {
contac contacts = new contac(0, 0, 0, TAG, TAG, TAG, TAG);
Log.e("","2");
contacts.setId(cursor.getLong(0));
contacts.setName(cursor.getInt(1));
contacts.setPhoneNumber(cursor.getInt(2));
contacts.setNUM(cursor.getString(3));
contacts.setTYPE(cursor.getString(4));
contacts.setCODE(cursor.getString(5));
contacts.setESME(cursor.getString(6));
Log.e("","2.1");
return contacts;
}
public void clearTable() {
SQLiteDatabase database = dbHelper.getWritableDatabase();
database.delete(dbHelper.getTableName(), null, null);
// helper is object extends SQLiteOpenHelper
}
public long getNAMESum() {
database = dbHelper.getWritableDatabase();
Log.e("F","1.9");
long result = 0;
Log.e("F","1.9.1");
Cursor cur = database.rawQuery("SELECT SUM(COLUMN_NAME) FROM myTable", null);
Log.e("F","1.9.2");
if(cur.moveToFirst())
{
return cur.getInt(0);
}
cur.close();
return result;
}
public int getTotal() {
// TODO Auto-generated method stub
int sum=0;
Cursor cursor = database.rawQuery("SELECT SUM(name) FROM "+dbHelper.getTableName(), null);
if(cursor.moveToFirst()) {
sum=cursor.getInt(0);
}
return sum;
}
public void delete(String id)
{
database = dbHelper.getWritableDatabase();
database.delete(dbHelper.getTableName(), "_id=?", new String[]{id});
database.close();
}
}
列表适配器
public class ListAdapter extends ArrayAdapter<contac> {
private final String TAG = "*** ListAdapter ***";
Context context;
LayoutInflater myInflater;
List<contac> list;
CheckBox checkBox6;
int x;
public ListAdapter(Context context, int resource,
List<contac> list) {
super(context, resource, list);
this.context = context;
this.list = list;
myInflater = LayoutInflater.from(context);
this.context = context;
Log.i(TAG, "Adapter setuped successfully.");
}
public void setData(List<contac> list) {
this.list = list;
Log.i(TAG, "Data passed to the adapter.");
}
public void clear(List<contac> list) {
list.clear();
Log.i(TAG, "Data passed to the adapter.");
}
@Override
public int getCount() {
return list.size();
}
public void remove(contac contac) {
list.remove(contac);
updateList(list);
setData(list);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
convertView = myInflater.inflate(R.layout.list_adapter, null);
holder = new ViewHolder();
// holder.tvId = (TextView) convertView.findViewById(R.id.tvId);
holder.tvName = (TextView) convertView.findViewById(R.id.tvName);
holder.tvPhone = (TextView) convertView.findViewById(R.id.tvPhone);
holder.tvnum = (TextView) convertView.findViewById(R.id.tvnum);
holder.tvtype = (TextView) convertView.findViewById(R.id.tvtype);
holder.tvcode = (TextView) convertView.findViewById(R.id.tvcode);
holder.tvesme = (TextView) convertView.findViewById(R.id.tvesme);
holder.checkBox6 = (CheckBox)convertView.findViewById(R.id.checkBox6);
holder.checkBox6
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
contac element = (contac) holder.checkBox6.getTag();
element.setSelected(buttonView.isChecked());
}
});
convertView.setTag(holder);
holder.checkBox6.setTag(list.get(position));
} else {
holder = (ViewHolder) convertView.getTag();
((ViewHolder) convertView.getTag()).checkBox6.setTag(list.get(position));
}
// ViewHolder holder = (ViewHolder) convertView.getTag();
NumberFormat format = NumberFormat.getCurrencyInstance();
// holder.tvId.setTag(list.get(position).getIdInString());
// holder.tvId.setText(list.get(position).getIdInString());
holder.tvName.setText(format.format(list.get(position).getName()));
holder.tvPhone.setText(format.format(list.get(position).getPhoneNumber()));
holder.tvnum.setText(list.get(position).getNUM());
holder.tvtype.setText(list.get(position).getTYPE());
holder.tvcode.setText(list.get(position).getCODE());
holder.tvesme.setText(list.get(position).getESME());
holder.checkBox6.setChecked(list.get(position).isSelected());
return convertView;
}
static class ViewHolder {
// TextView tvId;
TextView tvName;
TextView tvPhone;
TextView tvnum;
TextView tvtype;
TextView tvcode;
TextView tvesme;
CheckBox checkBox6;
}
public int sum() {
x=0;
for (int i =list.size(); i>0 ; i--) {
Log.e("sumprice","");
x = x +list.get(i).getName();
}
return x;
}
public List<contac> getcontac() {
return list;
}
public void updateList(List<contac> list) {
this.list = list;
notifyDataSetChanged();
}
}
和我在文本视图中设置的代码
int sum=dbHandler.getTotal();
txtsumprice = (TextView) view.findViewById(R.id.sumprice);
NumberFormat format = NumberFormat.getCurrencyInstance();
txtsumprice.setText(""+format.format(sum));
可以解决我的问题我非常努力但没有工作
答案 0 :(得分:0)
您有SQL语法错误(...myTotalFROM...
):
Cursor cursor = database.rawQuery("SELECT Sum(name)myTotalFROM "+dbHelper.getTableName(), null);
应该是:
Cursor cursor = database.rawQuery("SELECT Sum(name) AS myTotal FROM "+dbHelper.getTableName(), null);